nullはそれ自体が有効な値であり、したがって「未指定」として解釈できないため、各値が指定されているか指定されていないかを示すとともに、値をメソッドに渡す必要があります。
私は一般的なアプローチを取り、そのような値の単純なコンテナを作成しました(以下を参照)が、これは正しい方法ですか?この問題に取り組むためのより良い方法はありますか?たとえば、このようなクラスはフレームワークにすでに存在しますか?
public struct Omissible<T>
{
public readonly T Value;
public readonly bool IsSpecified;
public static readonly Omissible<T> Unspecified;
public Omissible(T value)
{
this.Value = value;
this.IsSpecified = true;
}
}
メソッドシグニチャは次のようになり、呼び出し元が特定の値を更新しない(指定しない)こと、他の値をnull /別の値(指定する)に設定する必要があることを示すことができます。
public void BulkUpdate(int[] itemIds,
Omissible<int?> value1, Omissible<string> value2) // etc.