【发布时间】:2015-04-20 06:28:51
【问题描述】:
我想知道为什么对Bar(ref object) 的第一次调用不起作用而第二次调用。考虑到我以任何方式传递object 类型似乎很愚蠢,和 将匿名类型传递给Foo(object) 工作正常。为什么ref,与内存位置有关的东西会影响对Bar()的调用?
考虑以下 sn-p:
static void Foo(object obj)
{ }
static void Bar(ref object obj)
{ }
static void Main()
{
// Compiles
var a = new { };
Foo(a);
// Does not compile
var b = new { };
Bar(ref b);
// Compiles
object c = new { };
Bar(ref c);
}
我在下面的答案中看到了有关如何编译代码的建议,但这不是我所追求的。我想具体了解为什么在将匿名类型传递给Foo() 时将其设为ref 参数会阻止编译工作正常。
【问题讨论】:
标签: c# .net anonymous-types ref