用于轮询属性的最简单的C#代码?

Pro*_*one 4 c# properties

我想知道用于轮询属性值的最简单代码,以在其getter中执行代码.
目前我正在使用:instance.property.ToString();,但我宁愿有一些没有可能的副作用或不必要的开销.

Jon*_*eet 16

(我假设你试图避免从简单地将值分配给未使用的变量时得到的警告.)

你可以写一个无操作的扩展方法:

public static void NoOp<T>(this T value)
{
    // Do nothing.
}
Run Code Online (Sandbox Code Playgroud)

然后打电话:

instance.SomeProperty.NoOp();
Run Code Online (Sandbox Code Playgroud)

这不会包装价值或触摸它 - 只需调用getter.这种结果的另一个优点ToString是,如果该值是空引用,则不会发生这种情况.

需要每个值类型的方法一旦JIT编译,但是这是一个非常小的代价......

  • 很有意思. (4认同)

Ed *_* S. 5

这听起来像是一个非常糟糕的主意.老实说,如果你在一个需要定期执行的getter中有逻辑,那就把它从getter中取出并粘贴在一个方法中.我不愿意跳进去维护这样的代码,一旦我终于弄清楚它为什么会这样做,我会重构它.