c# – 为什么ref参数不能像out参数一样被忽略?
作者:互联网
是否有一个特定的原因,为什么C#7带来内联参数而不是参考?
以下内容适用于C#7:
int.TryParse("123", out _);
但这是无效的:
public void Foo(ref int x) { }
Foo(ref _); // error
我没有看到为什么相同的逻辑不能应用于ref参数的原因.
解决方法:
原因很简单:因为您不允许将未初始化的变量传递给ref参数.情况一直如此,C#7中新的语法糖并没有改变这种情况.
注意:
int i;
MyOutParameterMethod(out i); // allowed
int j;
MyRefParameterMethod(ref j); // compile error
C#7中的新功能允许您在使用out参数调用方法的过程中创建变量.它不会改变有关未初始化变量的规则. ref参数的目的是允许将已初始化的值传递给方法,并(可选)允许更改原始变量.方法体内的编译器语义将ref参数视为初始化变量,将out参数视为未初始化变量.在C#7中它仍然是这样.
标签:c,c-7-0,ref-parameters 来源: https://codeday.me/bug/20190717/1487099.html