我通常使用类似于以下的代码:
if(!variable.Equals(value))
{
variable = value;
}
我学过这种做法,但我想知道它是否值得。比较的成本与赋值相比如何?我猜不值得,但C#是否针对将相同数据分配给变量的操作进行了优化?
谢谢
variable = value;
product[a.f() + 3].age = 2;
将执行大量计算以到达所需age
的位置。在您的情况下,在if
条件中进行相同的解引用。因此,在分配之前测试没有任何优势。比较意味着“减法和检查零标志”,并涉及从内存读取变量的值。分配意味着向内存写入值。读写内存是等效的。据我所知,编译器不使用此优化技巧。只有当变量
的值已经是值
,并且您想要拥有超快速和优化的代码时,它才有价值。但在我看来,收益是微不足道的。您应该使用变量=值;
,这样代码将更清晰,也能正常工作。