这纯粹是一种语言问题,因为我知道,这可能(甚至可能应该)以不同的方式解决。
我们有一个属性Prop
,它的getter有一些副作用。如何"打电话"这个属性在" nice"触发这些副作用的方法?
一种方式:
object dummy = this.Prop;
但这似乎不是一个很好的解决方案,因为它涉及创建不必要的变量。我尝试过:
(() => this.Prop)();
但它没有编译。有简短而干净的方法吗?
答案 0 :(得分:6)
如果你创建了一个变量,那么你会得到代码抱怨它没有被使用,这可能很烦人。
对于基准测试用例,我有时会添加一个通用的Consume()
扩展方法,它什么都不做:
public static void Consume<T>(this T ignored)
{
}
然后你可以写:
this.Prop.Consume();
并且编译器会很高兴。另一种方法是设置一个接受Func<T>
的方法:
public static void Consume<T>(Func<T> function)
{
function();
}
然后将其称为:
Consume(() => this.Prop);
我很少在测试之外面对这种情况(两个基准测试,&#34;我应该能够调用该属性而不会抛出异常&#34;测试)但是每隔一段时间它就会< em>可以有用,例如强制一个类被初始化。只要你发现自己想要这个,就值得考虑这是否更适合作为一种方法。