使用句法糖/内置功能

Kyl*_*ndo 3 .net c# syntactic-sugar

我正忙着深入研究多线程和死锁等问题.本书针对的是伪代码和C代码,我正忙着研究Mutex锁和监视器等实现.

这让人联想到以下几点; 在C#中,事实上我们在做事时有很多语法糖.例如(.NET 3.5):

lock(obj)
{
   body
}
Run Code Online (Sandbox Code Playgroud)

与以下相同:

var temp = obj;

Monitor.Enter(temp);

try 
{ 
   body 
}
finally 
{ 
   Monitor.Exit(temp); 
}
Run Code Online (Sandbox Code Playgroud)

当然还有其他一些例子,例如using() {}构造等.我的问题是什么时候它更适用于"单独行动"并且自己编码事物而不是在语言中使用"语法糖"?是否应该使用自己的方式而不是那些对您编写的语言更有经验的人?

我记得不得Processusing块中使用对象来帮助解决一些多线程问题和无限循环.因为没有使用构造,我仍然觉得很脏.

谢谢,

凯尔

Chr*_*ich 11

尽可能坚持语法糖.它简洁,易于维护,不易出错,易于理解,并且出于某种原因创建了它.

如果你必须手动控制某些东西(例如操纵IEnumerator<T>而不是使用foreach),那么是的,抛弃语法糖.否则,惯用是一件好事.


Tim*_*vis 7

软件开发的最大成本是长期维护,所以答案始终是,做一件能够为您提供最简单,最具成本效益的维护路径(例如,所有例外情况都可以证明规则,例如).如果您可以使用语法糖来使您的代码更具可读性,那么如果语法糖阻碍了那么这就是您的答案,那么就不要使用它.