黑马程序员技术交流社区

标题: 关于三元表达式的问题 [打印本页]

作者: 熊鑫    时间: 2013-4-17 11:36
标题: 关于三元表达式的问题
我们都知道三元表达式是: 表1?表2:表3  这种类型,  表1必须为bool类型,那么表2和表3可以为bool类型么?

作者: 张林杰    时间: 2013-4-17 11:56
可以,三元表达式只是要求表1必须为bool类型,表2和表3的类型一定要相同,举个例子:
  1.         static void Main(string[] args)
  2.         {
  3.             bool a = true;
  4.             bool b = false;
  5.             bool c = true;
  6.             Console.WriteLine(a?b:c);
  7.             Console.ReadKey();
  8.         }
复制代码
上面代码输出结果为False;需要注意的是,要是表2或表3其中一个为bool,另一个也必须为bool类型,要么其他相同类型。
作者: wang346351    时间: 2013-4-17 12:11
理论上是可以但这样用好像没有意义了。
      static void Main(string[] args)
        {
            bool flag = (4 > 5) ? (5 > 6) : (6 > 5);
            bool flag2 = (4 > 5) ? (5 < 6) : (6 < 5);
            Console.WriteLine(flag);
            Console.WriteLine(flag2);
            Console.ReadKey();
        }
显示结果 true fase
作者: 陈培茹    时间: 2013-4-17 12:29
可以但在(表达式1 ? 表达式2 : 表达式3)中,表达式2和表达式3的数据类型必须相同
作者: 清朗的晨风    时间: 2013-4-17 13:57
可以的,只要求第一个是bool类型,第二个和第三个表达式是同一类型即可。
作者: 史鹏飞    时间: 2013-4-17 14:27
string 变量1 = bool类型 ? 变量2 : 变量3;

因为“变量2” 和“变量3”要赋值给“变量1”,所以“变量2” 、“变量3”、“变量1” 的类型肯定要相同啊。bool类型的当然可以的。
作者: 胡化敏    时间: 2013-4-17 14:42
  string s=(2>4)?"1":"4";

表2,3的返回值类型必须相同,同时表1的返回值必须是bool类型
作者: zerochen46    时间: 2013-4-17 14:49
表2和表3可以为bool类型,不过必须是表2和表3都为bool类型,同时接收的变量也必须是bool类型




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2