【发布时间】:2011-05-05 09:23:18
【问题描述】:
假设我有这个 C# 类:
public class HttpContextEx
{
public HttpContext context = null;
public HttpRequest req = null;
public HttpResponse res = null;
}
如何在函数内声明它的对象,该对象将分配在堆栈上而不是堆上?
换句话说,我想避免为此使用“新”关键字。此代码错误:
HttpContextEx ctx = new HttpContextEx(); // << allocates on the heap!
我完全了解堆栈/堆是什么,并且听说过美妙的 C# GC,但我坚持在堆栈上分配这个仅为方便起见的小对象。
这种态度来自C++(我的主要工具),所以我不能忽视这一点,我的意思是它真的破坏了我在这里的乐趣(:
【问题讨论】:
-
你也得用 C# 来思考
-
@Poni:那么您可能应该只编写 C# 而不是尝试在 C# 中编写 C++。我想我并不太明白问题出在哪里,但 C#/.NET 之所以这样设计是有原因的。
-
创建
HttpContextEx的意义何在?现有的HttpContext类已经提供了Request和Response属性。 -
@John Rasch 在 12 多个函数之间传递相同的六个指针时,我很懒惰,而我可以简单地传递一个不错的对象。
-
为了简化——我不知道会出现这样的答案,如果我知道这些是我不会问的答案,我会吗?!?另外,aqwert 的答案就是答案,没有所有的“bla bla”。
标签: c# memory-management