有没有foo = foo有意义的有效情况?

sys*_*out 4 c# legacy refactoring

C#我继承的项目上清理了一些警告,我找到了这段代码:

private bool _WriteValue(object FieldValue,..,..)
  ...
  if(MultipFactor!=1)
     FieldValue=((double)FieldValue)*MultipFactor;
  else
    FieldValue=FieldValue;
Run Code Online (Sandbox Code Playgroud)

我显然else没有想太多就烧掉了块,只是想知道为什么以前的程序员已经离开了这一部分.

  • 是不是太懒了删除它?
  • 对于一些未来的程序员来说,如果在特定的情况下保存一些打字,这是否礼貌?
  • 它藏着危险的东西吗?

在您看来,是否有任何有效的情况foo=foo有意义?


有关该_WriteValue方法的更多详细信息:

_WriteValue方法被包裹成不同的重载WriteValue其传递给方法object FieldValue的参数,以下类型的值:int,long,stringDatetime.

Uwe*_*eim 5

如果FieldValue是属性,set运算符可以触发一些代码,所以在这种情况下自我赋值是否有意义?!

一个例子是:

public string FieldValue
{
    get
    {
        return _fieldValue;
    }
    set
    {
        _fieldValue = value;
        Trace.WriteLine( string.Format("Received value '{0}'.", value ) );
    }
}
Run Code Online (Sandbox Code Playgroud)

(我的回答是在海报添加FieldValue实际上是方法参数的信息之前给出的,而不是我先假设的属性)

  • 但这会打开一堆蠕虫,在属性中产生副作用,哇!如果没有人知道这些副作用是什么,任何阅读它的人都没有意义. (2认同)