为什么此程序输出为“1”。但它应该给出“Null Reference exception”,因为我在xyz()方法中将它设置为null。
static void Main(string[] args)
{
A a = new A();
B b = new B();
b.xyz(a);
Console.WriteLine(a.x);
Console.ReadKey();
}
class A
{
public int x = 1;
}
class B
{
public void xyz(A a)
{
a = null;
}
}
答案 0 :(得分:0)
您已将变量a
的副本设置为null
。调用方法xyz
时隐式创建此副本;这是因为默认情况下,方法调用中的参数是按值传递的。
要获得异常,您需要通过引用传递方法的参数:
public void xyz(ref A a)
{
a = null;
}
然后
b.xyz(ref a);
this MSDN page上有关于该主题的文档。