三項演算子を使用して IEnumerable が null かどうかを判断している状況があり、期待どおりに動作していませんでした。
私がこれを行う場合:
var children = clickedItem.Children != null ? clickedItem.Children.ToArray() : null;
.ToArray()
次に、null チェックにもかかわらず発生したことを示す引数 null 例外 (「ソースを null にすることはできません」) を受け取ります。
これを(一見)同一のロジックに変更すると:
var children = clickedItem.Children;
if (children != null) children = children.ToArray();
その後、エラーは消えます。私がいつも想像していたように、三項演算子は短絡しませんか?
EDIT質問ごとに:
はい、最初は子を設定していますが、2回目は設定していません:
public IEnumerable<AlbumOrTrack> Children
{
get
{
if (_children == null)
{
_children = _dataAccess.GetChildren(this);
}
return _children;
}
}
そして、例外は .ToArray() 呼び出しで発生しています。私は取得しています
// Exceptions:
// System.ArgumentNullException:
// source is null.
(メタデータから)