为什么在更改作为参数接收的refernce-type实例时没有警告

时间:2015-10-18 04:58:52

标签: c# .net

我想知道,在C#中,当你有一个未被使用的成员时。 intellinsense /编译器会在您未使用时发出警告 将类的引用类型实例作为参数传递时,更改其成员将在离开函数后影响实例。

如果在函数内部,我们用新的实例替换实例:

private void DoSomething(MyData data)
{
     data=new MyData(); //Why is this allowed and no even warning
}

实例将保留,因为我们不能更改传递给函数的引用类型的值,而只能更改它指向的数据。

为什么没有这方面的警告?
甚至启用它的目的是什么?

1 个答案:

答案 0 :(得分:0)

偶尔清晰简洁,以及#34;修复"传递给函数的参数。示例@Rob给出data = data ?? new MyData(),允许使用Null Object模式,这样可以编写函数的其余部分,从而不需要检查是否data == null

当然,你可以使用一个不同的变量,但在某些情况下,实际传入的内容与"修复"之间的区别。价值没有意义。