我才刚刚开始使用resmanper,我要在分配前获得"冗余检查"警告,我想知道运行时是否确实确实检查了平等并跳过重新分配该值。我已经看到了有关不变或原始或复杂价值的其他帖子,以及检查平等与重新分配平等价值的成本所涉及的成本,这不是我的关注。
我担心的是,一个属性上的setter在第二个属性上调用设置器,例如,由于网络调用,第二个设置器的成本很高。如果运行时实际上没有在分配前检查平等,我需要自己做,以防止不必要的第二个设置器运行。如果它确实检查了平等而没有重新分配,我宁愿不进行多余的检查以提高性能和可读性。
那么,.NET 4.7在分配前检查属性值吗?
刚刚使用下面的代码检查,在分配之前,它不会检查平等:
Test t = new Test();
t.MyValue = 1;
t.MyValue = 1;
public class Test
{
public Test()
{
}
private int myValue;
public int MyValue
{
get
{
return myValue;
}
set
{
myValue = value;
Console.WriteLine($"Setter Called value->{myValue}");
}
}
}
输出:
setter称为值 - > 1
setter称为值 - > 1