C#7带内联out
参数而不带内联参数是否有特定原因ref
?
以下内容在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中仍然如此。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句