C# 4.0 为什么下面提到的程序不';不能给出空引用异常?
为什么该程序输出为“1”。但它应该给出“Null引用异常”,因为我在xyz()方法中将它设置为Null 您已将变量C# 4.0 为什么下面提到的程序不';不能给出空引用异常?,c#-4.0,C# 4.0,为什么该程序输出为“1”。但它应该给出“Null引用异常”,因为我在xyz()方法中将它设置为Null 您已将变量a的副本设置为null。调用方法xyz时隐式创建此副本;这是因为默认情况下,方法调用中的参数是按值传递的 要获取异常,需要通过引用传递方法的参数: public void xyz(ref A a) { a = null; } 然后 b.xyz(ref a); 上有关于该主题的文档。但默认情况下,类对象是通过引用传递的。为什么我们需要设置“ref”?@user3177199
a
的副本设置为null
。调用方法xyz
时隐式创建此副本;这是因为默认情况下,方法调用中的参数是按值传递的
要获取异常,需要通过引用传递方法的参数:
public void xyz(ref A a)
{
a = null;
}
然后
b.xyz(ref a);
上有关于该主题的文档。但默认情况下,类对象是通过引用传递的。为什么我们需要设置“ref”?@user3177199:它们不是通过引用传递的,而是通过值传递的引用。这是一个重要的区别。
b.xyz(ref a);