这两个条件之间的差异

时间:2010-08-31 11:41:28

标签: c#

这两个条件的区别是什么

return Convert.ToInt32(cmd.ExecuteScalar()) == 1 ? true : false;

return res =! 0 ? true:false;

return Convert.ToInt32(cmd.ExecuteScalar()) > 0 ? true : false;

当我检查表[mysql]

中是否存在信息时,这三个条件有什么不同

4 个答案:

答案 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

如果您的值只能是01,那么它们中的所有三个都将在功能上等效,但由于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; 
相关问题