3

nullの可能性があるオブジェクトを返す場合、通常は (その適切な名前は?!) 非常に驚いた演算子: ??を使用します。そのようです。

return hazaa ?? new Hazaa();

オブジェクトのプロパティ(存在する場合)とデフォルト値を返すと、問題が発生します。null 性のチェックは親オブジェクトに対して行う必要があるわけではありません。今日、私はそうします。

return hazaa != null
  ? hazaa.Property
  : String.Empty;

私はそれが最適な構文ではないと思うので、もっとコンパクトにしたいです (しかし、プロパティが適切に実装されていることを考えると、それでも簡単に理解できます)。

return (hazaa ?? new Hazaa()).Property;

しかし、私は括弧が嫌いで、括弧を省略してもコンパクトな構文を探しています。C# にそのようなものはありますか? 私はこのようなものを探しています。

return hazaa ?.Property :String.Empty;

と、考えを巡らせると、こんな感じ。

return hazaa ?.Property :.BackUpProperty;

このような動作を提供する独自のプロパティ レイヤーを作成することもできますが、それは問題を隠しているだけです。:)

4

2 に答える 2

3

A Maybe モナドが代替案になるかもしれません。

実装に応じて、次のようになります。

May.Be(hazaa, x => x.Property, string.Empty);

また

May.Be(hazaa).Select(x => x.Property, string.Empty);
于 2013-08-20T10:51:09.257 に答える
2

このトピックに興味がある場合は、モナドについて読んでください。特にMaybeモナドについて。これで始められるはずです: http://devtalk.net/csharp/chained-null-checks-and-the-maybe-monad/

残念ながら、C# には null チェックを簡素化する組み込みの構文はありません。

于 2013-08-20T10:50:13.783 に答える