为什么在更改作为参数接收的引用类型实例时没有警告
本文关键字:实例 引用类型 警告 参数 为什么 | 更新日期: 2023-09-27 18:18:07
我想知道,在c#中,当您有一个未使用的成员时。当它没有被使用时,intellinsense/编译器会发出警告。
当将类的引用类型实例作为参数传递时,更改其成员将在离开函数后影响实例。
如果在函数内部用新实例替换实例:
private void DoSomething(MyData data)
{
data=new MyData(); //Why is this allowed and no even warning
}
实例将保留,因为不能更改传递给函数的引用类型的值,只能更改它所指向的数据。
为什么没有警告?
启用它的目的是什么?
"修复"传递给函数的参数有时是清晰而简洁的。@Rob给出了data = data ?? new MyData()
的例子,允许使用Null对象模式,这样函数的其余部分就可以编写而不需要检查data == null
是否存在。
当然,您可以使用不同的变量,但在某些情况下,实际传递的值与"修复"值之间的区别是没有意义的。