Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 为什么下面提到的程序不';不能给出空引用异常?_C# 4.0 - Fatal编程技术网

C# 4.0 为什么下面提到的程序不';不能给出空引用异常?

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

为什么该程序输出为“1”。但它应该给出“Null引用异常”,因为我在xyz()方法中将它设置为Null

您已将变量
a
的副本设置为
null
。调用方法
xyz
时隐式创建此副本;这是因为默认情况下,方法调用中的参数是按值传递的

要获取异常,需要通过引用传递方法的参数:

public void xyz(ref A a)
{
    a = null;
}
然后

b.xyz(ref a);

上有关于该主题的文档。

但默认情况下,类对象是通过引用传递的。为什么我们需要设置“ref”?@user3177199:它们不是通过引用传递的,而是通过值传递的引用。这是一个重要的区别。
b.xyz(ref a);