15

LocationID私は検索機能を持っていますが、単一の整数ではなく、整数の配列になりたいと思っています。null許容にしたいので、これを行う方法がわかりません。私はやっていることを見てきましたが、すべてのエントリint?[]をチェックする必要があります。HasValueより良い方法はありますか?

これは私が現在持っているものです:

public ActionResult Search(string? SearchString, int? LocationId,
    DateTime? StartDate,  DateTime? EndDate)
4

2 に答える 2

32

配列はそのまま常に参照型であるstringため、すでにnull 許容です。T が null 非許容値型の場合にのみ使用する必要があります (使用できるのは使用のみです) 。Nullable<T>

だからあなたはおそらく欲しい:

public ActionResult Search(string searchString, int[] locationIds,
                           DateTime? startDate,  DateTime? endDate)

パラメーター名を .NET 命名規則に従うように変更LocationIdlocationIds、複数の場所用であることを示すために に変更したことに注意してください。

また、パラメータ タイプを に変更するIList<int>IEnumerable<int>、より一般的なものに変更することを検討することもできます。たとえば、

public ActionResult Search(string searchString, IList<int> locationIds,
                           DateTime? startDate,  DateTime? endDate)

そうすれば、呼び出し元はList<int>たとえばを渡すことができます。

于 2013-04-17T20:50:24.273 に答える
11

配列は参照型なので、何もする必要はありません。すでに渡すことができますnull:

次のシグネチャを持つメソッドは、すべてのパラメーターを次のように指定して呼び出すことができますnull

public ActionResult Search(string SearchString, int[] LocationIds,
                           DateTime? StartDate, DateTime? EndDate)


foo.Search(null, null, null, null);

string注:参照タイプでもあるため、後に疑問符を追加で削除しました。

于 2013-04-17T20:49:53.770 に答える