私はいくつかの日付、paramsキーワードを使用して他のパラメータの不明な数を取ると、オブジェクトのリストを返すデリゲートを定義したいと思います。デリゲートでparamsキーワードを使用できますか?
Func<DateTime, DateTime, params int[], List<object>>
Visual Studioでは、これは許可されていないと思われる構文が嫌いです。なぜ誰かが私に言うことができますか?
私はいくつかの日付、paramsキーワードを使用して他のパラメータの不明な数を取ると、オブジェクトのリストを返すデリゲートを定義したいと思います。デリゲートでparamsキーワードを使用できますか?
Func<DateTime, DateTime, params int[], List<object>>
Visual Studioでは、これは許可されていないと思われる構文が嫌いです。なぜ誰かが私に言うことができますか?
をあなたはジェネリック型引数にカスタム属性を持つことはできません(CLIがそれを許可していません) C#コンパイラは、System.ParamArrayAttribute
を関連するメソッドパラメータに出力してparams
キーワードを実装します。
これにより、System.Func <...>総称代理人では使用できなくなりますが、いつでもparams
を使用する独自の代理人タイプを作成できます。
最後のパラメータ以外のパラメータにはパラメータを使用できません。これは、そのパラメータの不平の一部です。
タイプ引数にparams
も使用できません。これは代表者のためだけではなく、一般的にです。たとえば、あなたが書くことはできません。
List<params string[]> list = new List<params string[]>();
あなたは、しかし、このように、新しいデリゲート型を宣言することができます。
メソッドグループの変換が一致する必要がありますdelegate void Foo(int x, params string[] y);
...
Foo foo = SomeMethod();
foo(10, "Hi", "There");
に留意されたいです。あなたがSomeMethodを次のように宣言することはできませんでした。例えば、上記のように動作することを期待してください。それはでなければならない:(。それとも、コースのparams
自体を、使用することができます)
void SomeMethod(int x, string[] args)