Nullable
ジェネリックと同様に、C# 2.0 で導入されました。それよりも前のコードがたくさんあります。
正直なところ、私は何か問題が発生したNullable
ときに を返すのが好きではありません。
あなたが通常持っているのは次のような方法です
SomeOtherType Something(SomeType inputData) { ... }
何か問題が発生した場合に例外をスローします。場合によっては、例外を回避したいので、別の方法があります: あなたが与えたものです。
bool TrySomething(SomeType inputData, out SomeOtherType result) { ... }
ただし、例外は何が問題なのか正確であり、ブール値は正確ではありません。したがって、 がfalse
表示された場合、「うまくいかなかった」という情報はほとんどありません。場合によっては、それで十分かもしれません。私は、「私のコレクションにはその値が含まれていませんでした」というエラーと、「現在メモリが不足していて、もう何もできません」というエラー、またはその他のものを区別するのが好きです。
as戻り値を紹介すると、それは、私がそう呼んでいるように、受け取るということは「値がnullである」という意味ではなく、「何らかのエラーが発生した」という意味Nullable
であることを知っているドルイドの知識です。メソッドの結果は自明ですがnull
、それは文書化して説明する必要があるものです。bool
TryXXX
要するに、Nullable
戻り値として を使用することで、わずかに紛らわしいコードを生成するだけで、何も得られません。