1. ホーム
  2. c#

[解決済み] NULL合体演算子のユニークな使い方【終了しました

2022-04-23 17:41:31

質問

の標準的な使い方は知っています。 null合体演算子 C# では、デフォルト値を設定することです。

string nobody = null;
string somebody = "Bob Saget";
string anybody = "";

anybody = nobody   ?? "Mr. T"; // Returns Mr. T
anybody = somebody ?? "Mr. T"; // Returns "Bob Saget"

しかし、他に何ができるかというと ?? に使えるのでしょうか?のような便利さはなさそうです。 三項演算子 よりも簡潔で読みやすいということを除けば、です。

nobody = null;
anybody = nobody == null ? "Bob Saget" : nobody; // Returns Bob Saget

だから、null合体演算子について知っている人が少ないことを考えると......。

  • を使用したことがありますか? ?? を他の何かに使用することはできますか?

  • ?? それとも三項演算子を使うべきでしょうか? を使用します。)

解決方法は?

まず、標準的な三項演算子よりも連鎖しやすくなっていますね。

string anybody = parm1 ?? localDefault ?? globalDefault;

vs.

string anyboby = (parm1 != null) ? parm1
               : ((localDefault != null) ? localDefault
               : globalDefault);

また、null-possibleオブジェクトが変数でない場合もうまくいきます。

string anybody = Parameters["Name"]
              ?? Settings["Name"]
              ?? GlobalSetting["Name"];

vs.

string anybody = (Parameters["Name"] != null ? Parameters["Name"]
                 : (Settings["Name"] != null) ? Settings["Name"]
                 :  GlobalSetting["Name"];