Jav*_*aSa 2 c# reference ref pass-by-reference
是否可以通过Ref传递参考类型(Class)的自动属性的变通方法?
我唯一想到的就是不要使用自动属性:只需要像往常一样声明私有变量并通过ref传递它,如果需要的话,将公共属性添加到一边.
坦率地说,它看起来有点愚蠢(所有官僚机构都需要绕过它)
我的问题:1.
为什么编译器不允许自动属性被ref传递(就像它是一个简单的数据成员)?2.什么时候使用或应该使用Ref?我注意到有人说使用它可能只在极少数情况下才会发生.他们是什么?
为什么编译器不允许ref传递自动属性
因为它不是引用 - 它是一个方法对(get/set).解决方法是创建一个持有的属性的值的局部变量,传递的是引用,并设置属性来更新值:
var temp = myObj.myProperty;
MethodWithRefParam(ref temp);
myObj.MyProperty = temp;
Run Code Online (Sandbox Code Playgroud)
如您所说,您可以通过引用传递backing属性,但只能从该类中传递.
我们什么时候使用或应该使用Ref?
通常 ref(和out,这是一种特殊情况ref)参数仅在返回值时使用不实用. TryParse是一个常见的框架示例.该方法返回bool告诉您解析是否成功,而不是返回解析后的值,并在out参数中"返回"解析后的值.
使用ref引用类型通常是代码气味,可能表明作者不理解引用类型的工作方式.
| 归档时间: |
|
| 查看次数: |
1060 次 |
| 最近记录: |