検索機能がありますが、LocationID
を単一の整数ではなく、整数の配列にしたいのですが。これもnull許容にしたいので、これを行う方法がわかりません。 int?[]
を実行することを検討しましたが、すべてのエントリのHasValue
を確認する必要があります。もっと良い方法はありますか?
これは私が現在持っているものです:
public ActionResult Search(string? SearchString, int? LocationId,
DateTime? StartDate, DateTime? EndDate)
string
と同様に、配列は常に参照型であるため、すでに null許容です。使用する必要があるのはNullable<T>
のみです(そしてcan useのみ)。ここで、Tはnull許容でない値型です。
だからあなたはおそらく欲しい:
public ActionResult Search(string searchString, int[] locationIds,
DateTime? startDate, DateTime? endDate)
.NETの命名規則に従うようにパラメーター名を変更し、LocationId
をlocationIds
に変更して、複数の場所用であることを示していることに注意してください。
また、パラメータタイプをIList<int>
またはIEnumerable<int>
に変更して、より一般的にすることを検討することもできます。
public ActionResult Search(string searchString, IList<int> locationIds,
DateTime? startDate, DateTime? endDate)
そうすれば、発信者はたとえばList<int>
を渡すことができます。
配列は参照型であるため、何もする必要はありません。すでにnull
を渡すことができます。
次のシグネチャを持つメソッドは、すべてのパラメータをnull
として呼び出すことができます。
public ActionResult Search(string SearchString, int[] LocationIds,
DateTime? StartDate, DateTime? EndDate)
foo.Search(null, null, null, null);
注意:string
の後の疑問符も参照型であるため、追加で削除しました。