【发布时间】:2020-03-28 03:22:20
【问题描述】:
我有时看到有一个参数的方法,修改它并返回它。
这样做有什么好处,为什么不简单地通过 ref 传递参数并通过ref 保留方法?
这是我看到的:
public MyClass DoSomething(MyClass myClass)
{
myClass.Amount = 500;
return myClass;
}
为什么不保持简单:
public void DoSomething(ref MyClass myClass)
{
myClass.Amount = 500;
}
【问题讨论】:
-
ref MyClass myClass 如果 myClass 是一个类就没有多大意义,如果 myClass 是一个结构体就有意义。
-
第二种方法不需要加ref。
-
@StefanoBalzarotti 实际上,如果您想覆盖实例,
ref是有意义的。 -
这是 Jon Skeet 的一篇不错的博客,其中介绍了引用类型以及它与通过引用传递的区别 jonskeet.uk/csharp/parameters.html
-
是的,这样您就可以将它们链接起来:
MyClass x = myClass.DoSomethingA ().DoSomethingB ().DoSomethingC ()- 但是请注意,如果方法在类中,则没有理由将实例作为参数提供...除非它是静态扩展方法。
标签: c#