除非必要,如何不评估三元运算符的第三部分

时间:2018-12-13 13:38:49

标签: c# conditional-operator

对于我的程序,我需要以下代码行的功能。如果条件的计算结果为true,我需要表达式if为false,由于System.IndexOutOfRangeException而不会被计算。有什么办法可以做到这一点?

Bobject VARvalue = (args.Length < 2) ? Zero : new Bobject(args[2]);

编辑:我并没有具体说明此行的目标。目的是检查代码中是否存在args[2],如果不存在,请将变量设置为其他值,因为args[2]会引发异常。

2 个答案:

答案 0 :(得分:1)

要使您的条件为假,args.Length必须等于2或更高。

如果它是2,则访问args[2]会抛出IndexOutOfRangeException,因为唯一可用的索引是01

如果要在args数组中添加SECOND项,则必须传递索引1,因为数组索引基于零。 Bobject VARvalue = (args.Length < 2) ? Zero : new Bobject(args[1]);

或者至少将您的条件修改为args.Length <= 2。我不太确定哪种解决方案可以解决您的特定目标,但是希望这能使您朝正确的方向前进。

答案 1 :(得分:0)

数组基于0,因此第二项位于索引1,而不是2:

Bobject VARvalue = (args.Length < 2) ? Zero : new Bobject(args[1]);