为什么在更改作为参数接收的引用类型实例时没有警告

本文关键字:实例 引用类型 警告 参数 为什么 | 更新日期: 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是否存在。

当然,您可以使用不同的变量,但在某些情况下,实际传递的值与"修复"值之间的区别是没有意义的。