iif等效于c#

C#有相当于IIf吗? 或者类似的捷径?

    7 Solutions collect form web for “iif等效于c#”

    C#有“?” 三元运算符,就像其他C语言一样。 但是,这并不完全等同于iif。 有两个重要的区别。

    为了解释第一个,即使expression式为真,这个iif()调用也会导致DivideByZeroexception,因为iif只是一个函数,在调用之前必须计算所有参数:

     iif(true, 1, 1/0) 

    换句话说,就像你的问题所表明的那样,iif 不是传统意义上的短路。 另一方面,这个三元的expression确实如此:

     (true)?1:1/0; 

    另一个区别是iif不是types安全的。 它接受并返回objecttypes的参数。 三元运算符使用types推断来知道它处理的是什么types。 请注意,你可以用一个通用的实现来很容易地解决这个问题,但是就是这样。

    如果你真的想在C#中使用iif(),你可以拥有它:

     object iif(bool expression, object truePart, object falsePart) {return expression?truePart:falsePart; } 

    或通用/types安全的实现:

     T iif<T>(bool expression, T truePart, T falsePart) { return expression?truePart:falsePart;} 

    另一方面,如果你想在VB中使用三元运算符,Visual Studio 2008和更高版本提供了一个新的If 运算符 ,它更像C#的三元运算符 。 它使用types推断来知道它返回的是什么,它是一个运算符而不是一个函数,所以不存在讨厌的零分问题。

    VB.NET:

     If(someBool, "true", "false") 

    C#

     someBool ? "true" : "false"; 

    三元运算符

     bool a = true; string b = a ? "if_true" : "if_false"; 

    coalesce操作符也是有用的。

    VB:

     Return Iif( s IsNot Nothing, s, "My Default Value" ) 

    C#:

     return s ?? "My Default Value"; 
     booleanExpression ? trueValue : falseValue; 

    例:

     string itemText = count > 1 ? "items" : "item"; 

    http://zamirsblog.blogspot.com/2011/12/c-vb-equivalent-of-iif.html

    这是三元运算符?

     string newString = i == 1 ? "i is one" : "i is not one"; 

    这是有限的,你不能把陈述在那里。 你只能把值(或返回/评估值的东西),返回

    这有效('a'是类Blah内的静态int)

     Blah.a=Blah.a<5?1:8; 

    (圆括号在等号和问号之间是非常重要的)。

    这不起作用。

     Blah.a = Blah.a < 4 ? Console.WriteLine("asdf") : Console.WriteLine("34er"); or Blah.a = Blah.a < 4 ? MessageBox.Show("asdf") : MessageBox.Show("34er"); 

    所以你只能使用c#三元运算符来返回值。 所以这不像是一个简短的forms。 JavaScript和其他一些语言可以让你把语句放在那里。