[ VB ] If 运算符 [ C# ] 条件运算符 (?:)

//保留了原文   ()为大概的意思

 

VB で使用していた IIf 関数の代わりに VB2008 からは If 演算子 を使用可能となった。 また、 C# では、条件演算子 (?:) で同等の記述が可能である。 ここでは、それぞれの使用方法について示す。

(自VB2008开始if运算符代替VB中的IIf函数,相当于C#的(?:)下面就是各自的使用方法举例)

[ C# ] 条件演算子 (?:)

(条件运算符)

[C#]

    int score   = 80;
    int average = 60;

    // 条件が真ならgood、偽ならbadが返される(条件真返回good,条件假返回bad)
object ret = score > average ? "good" : "bad";

以下のように真と偽の場合で異なる型を返すことはできないので注意が必要である。 ただし、全く異なる型を返すことはお勧めできないが、回避することも可能なのでその方法も示す。

(像下面的例子  用对象类型的时候 不能成功的返回值,但是可以有解决的办法)

[C#]
    // 異なる型を返すことはできない(コンパイルエラー)(转换失败)
    //object ret = score > average ? new List<string>[1] : new Dictionary<string, string>[2];

    // どうしても、異なる型を返したい場合の回避方法(解决办法  定义两个object类型)
    object a = new List<string>[1];
    object b = new Dictionary<string, string>[2];
   
    object ret = score > average ? a : b;

[ VB ] IIf 関数 (IIF函数)

IIf 関数の使い方はここでは省略するが、参考サイトにあるように以下のコードでは 例外(System.DivideByZeroException)が発生する。(iif的使用方法下面)

[VB]
    Dim number As Integer= 12
    Dim divisor As Integer = 0

    ' 例外発生
    Dim ret As Integer = IIf(divisor <> 0, number \ divisor, 0)  iif(表达式,如果成立返回结果1,不成立返回结果2)  iif(条件表达式,1,2)

IIf 関数では、条件(divisor <> 0)が真の場合にのみ、真の演算(number \ divisor)を行うのではなく 常に真偽のいずれの演算も行い、条件によってその結果を返しているために上記のコードで例外が発生する。 前述の If 演算子や C# の条件演算子 (?:)では、条件に結果によって真偽いずれかの演算のみ行われるので このような問題は起こらない。


(注意除数为0的错误情况)


 

转载于:https://www.cnblogs.com/c-x-a/p/4514321.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值