这两个条件的区别是什么
return Convert.ToInt32(cmd.ExecuteScalar()) == 1 ? true : false;
return res =! 0 ? true:false;
return Convert.ToInt32(cmd.ExecuteScalar()) > 0 ? true : false;
当我检查表[mysql]
中是否存在信息时,这三个条件有什么不同答案 0 :(得分:8)
您正在使用三元运营商。
1st-> return Convert.ToInt32(cmd.ExecuteScalar()) == 1 ? true : false;
正确: - 当Convert.ToInt32(cmd.ExecuteScalar())
的输出等于1时。
错误: - 如果它不等于1。
2nd-> return res =! 0 ? true:false;
语法错误
正确的是return res != 0 ? true:false;
它有语法错误
正确: - 当res不等于0时。
错误:-if res等于0。
3rd-> return Convert.ToInt32(cmd.ExecuteScalar()) > 0 ? true : false;
true: - Convert.ToInt32(cmd.ExecuteScalar())
的值大于0。
否则为假。
答案 1 :(得分:5)
您无需在其中任何一个中指定? true : false
。只需return Convert.ToInt32(cmd.ExecuteScalar()) == 1;
(例如)即可。就数据库而言,没有任何区别,应用程序中的任何性能差异都是可以忽略的,应该被忽略。剩下的只是比较结果等于1,不等于0或大于零的基本逻辑差异。
答案 2 :(得分:1)
所有三个版本的逻辑略有不同:
true
时,第一个版本会返回1
,否则会false
。false
时,第二个版本会返回0
,否则会true
。true
,否则为false
。如果您的值只能是0
或1
,那么它们中的所有三个都将在功能上等效,但由于Int32
有2,因此代码本身无法保证这一点^ 32个不同的状态。
答案 3 :(得分:1)
嗯,第一个和第三个表达式是相似的。但是,只有当结果为1时,第一个返回true,只要结果不为零,第三个返回true。因此,如果sql命令返回2,则结果将不同。
表达式第二,我不确定为什么要将它与其他两个进行比较。
BTW,三元运算符?:在所有三行中都是冗余的。你也可以写return Convert.ToInt32(cmd.ExecuteScalar()) == 1;
return res =! 0;
return Convert.ToInt32(cmd.ExecuteScalar()) > 0;