2013-04-17 10 views
12

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

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

Mods、この1つの品質質問フィルターは過去には非常に困難でした。そして最後にタイトルに「Using」を追加することで、それが機能するようになりました。どうしてこんなにひどい質問だったのか分かりません。 – Preston

+0

'C#'、 'nullable'、' arrays'はすべてタグです。これがあなたのタイトルが拒否された理由です。 –

+0

@EsotericScreenName ...タグが群集になっていると考えると、それは非常に賢明ではありません。 – Preston

答えて

26

配列は常にstringのように参照型です。したがって、はすでにです。使用する必要があるのはです。Nullable<T>ここで、Tはnull値のない値の型です。

だからあなたはおそらくしたい:私は.NETの命名規則に従うことをお使いのパラメータ名を変更し、それが複数の場所のためだということを示すために、locationIdsLocationIdを変更した

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

注意を。

パラメータタイプをIList<int>に変更するか、さらにはIEnumerable<int>に変更することを検討して、より一般的にすることもできます。

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

このようにして、発信者はList<int>を渡すことができます。

9

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

方法を、次のシグネチャを持つことができます。これは、私が現在持っているものである

nullなど、すべてのパラメータを指定して呼び出すこと:

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


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

ご注意:私は、さらに後に疑問符を削除も参照型です。

関連する問題