这是一个纯粹迂腐的问题,以满足自己的好奇心.
我倾向于在问题中使用后一种选择(所以if (boolCheck) { ... }:),而同事总是写前者(if (boolCheck == true) { ... }).我总是有点嘲笑他,并且从他第一次开始编程时他总是把它解释为一种旧习惯.
但是我今天刚刚想到,实际写出整个== true部分可能实际上需要一个额外的处理步骤,因为任何带有==运算符的表达式都会被计算为布尔值.这是真的?
换句话说,据我所知,没有 == true行的选项可以松散地描述如下:
使用 == true行的选项更像是:
我对么?或者也许任何普通的编译器/解释器都会消除这种差异?或者我忽略了什么,而且根本没有什么区别?
显然,在实际观察到的性能方面没有区别.就像我说的,我只是好奇.
编辑:感谢所有实际发布编译结果的人,以说明两种方法之间的步骤是否不同.(看起来,大部分时间,它们都是,虽然只是轻微的.)
我只想重申,我并不是在问什么是"正确的"方法.我知道很多人喜欢一个人而不是另一个人.我也理解,从逻辑上讲,两者是相同的.如果CPU执行的实际操作对于两种方法完全相同,我只是很好奇; 事实证明,在很多时候(显然它取决于语言,编译器等),它们不是.
我总是使用If语句(在C#中)作为(1. Alternative);
if (IsSuccessed == true)
{
//
}
Run Code Online (Sandbox Code Playgroud)
我知道没有必要写"== true"作为(2. Alternative));
if (IsSuccessed)
{
//
}
Run Code Online (Sandbox Code Playgroud)
但是,我使用它是因为它更具可读性并且不会导致性能问题.当然,这是我的选择,我知道许多软件开发人员更喜欢第一种选择.什么是最佳用法,为什么?
我想检查一个值是否等于1.以下代码行是否有任何区别
评估值== 1
1 ==评估价值
在编译器执行方面
可能重复:
(0 ==变量)或(null == obj):C#中过时的练习?
为什么在C#中经常会看到"null!= variable"而不是"variable!= null"?
我见过很多次人们将null评估为变量而不是将变量评估为null.
if(null== user)
Run Code Online (Sandbox Code Playgroud)
代替
if(user==null)
Run Code Online (Sandbox Code Playgroud)
我知道两者都试图实现相同的功能.所以,它是一些标准还是纯粹的个人偏好.请评论.