1. ホーム
  2. c#

[解決済み] ?: ?? IF|ELSEに代わる演算子

2023-04-22 19:28:21

質問

public string Source
{
    get
    {
        /*
        if ( Source == null ){
            return string . Empty;
        } else {
            return Source;
        }
        */
        return Source ?? string.Empty;
    }
    set
    {
        /*
        if ( Source == null ) {
            Source = string . Empty;
        } else {
            if ( Source == value ) {
                Source = Source;
            } else {
                Source = value;
            }
        }
        */
        Source == value ? Source : value ?? string.Empty;
        RaisePropertyChanged ( "Source" );
    }
}

この場合 ?: ?? 演算子 厳密に のように、If/Else?


私の質問:

演算子で次のように書くにはどうしたらよいでしょうか。

[ 1 ]

if ( Source == null ){
    // Return Nothing
} else {
    return Source;
}

[ 2 ]

if ( Source == value ){
    // Do Nothing
} else {
    Source = value;
    RaisePropertyChanged ( "Source" );
} 

簡単に言うと : 何もしない、何も返さない、複数の命令を行う方法として ?: ?? 演算子で複数の命令を行うには?

どのように解決するのですか?

1] では、できません。これらの演算子は、値を返すためのものであり、演算を行うためのものではありません。

式は

a ? b : c

は以下のように評価されます。 b もし a が真で c もし a が偽の場合。

式は

b ?? c

は以下のように評価されます。 b もし b がヌルでなく、かつ c もし b が NULL の場合。

と書くと

return a ? b : c;

または

return b ?? c;

彼らは 常に を返します。

2]については、正しい値を返す関数で、"複数の演算"を実行するものを書くことができますが、それはおそらく、単に if/else .