6

我正在使用 C#.NET 以 4 人为一组做一个项目。虽然我很自然地写下了类似的内容: if (var_name == "some_text"),但其中一位小组成员强烈坚持将那行更改为if ("some_text" == var_name)并声称“这是一种更好的编程实践”,这是她从一些传感器程序员那里学到的。我们小组中没有人,甚至她自己,都不明白这背后的动机是什么,而且感觉更尴尬。这是更好的做法还是只是另一个城市神话?

4

4 回答 4

11

There's no good reason for this in C#.

In C you can inadvertently forget one of the = signs, and C allows this:

if (x = 5)

Which will compile and always return either true or false (true if the variable was set to any non-zero value, false if it was zero). This was a common source of errors, so writing if (5 == x) prevents this as the C compiler would complain if you ommitted one of the = signs.

C# however does NOT allow assignment to be treated as a boolean condition, and thus its impossible to make this mistake, so the suggestion is pointless. I'd recommend sticking to the more natural "if x equals 5" style.

于 2012-09-25T20:24:03.863 回答
6

是的,我不是它的忠实粉丝.. 但是有.. 如果您错误地使用 operator assign ( =) 而不是 compare 它不会编译和/或它会立即崩溃。至少在“通用”编程语言中;-)

该网络对此进行了详细介绍-http: //united-coders.com/christian-harms/what-are-yoda-conditions/

于 2012-09-25T20:10:16.220 回答
2

我在大学上第一堂 C++ 课时就开始这样做了,以免意外地分配一个我试图检查的值,而且它总是跟着我。但是,当我使用 C# 时,我倾向于这样做:

if (var_name.Equals("some_text"))

这不仅可以防止意外分配,而且对我来说,从视觉上看,看到 Equals() 比看到 == 更容易理解。只是我的两分钱。

于 2012-09-25T21:07:32.233 回答
1

当我在大学学习编程课程时,我被教导要倒着写。我们使用的是 C++,正如其他答案所说,它在 C++ 中有所不同。

于 2012-09-27T18:08:23.777 回答