Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I'd like to define a delegate that takes a couple of dates, an unknown number of other parameters (using the params keyword), and that returns a list of objects:

Func<DateTime, DateTime, params int[], List<object>>

Visual Studio doesn't like the syntax which is making me think this isn't allowed. Can anyone tell me why?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
368 views
Welcome To Ask or Share your Answers For Others

1 Answer

You can't use params for any parameter other than the last one... that's part of what it's complaining about.

You also can't use params in a type argument. This isn't just for delegates, but in general. For example, you can't write:

List<params string[]> list = new List<params string[]>();

You can, however, declare a new delegate type, like this:

delegate void Foo(int x, params string[] y);

...

Foo foo = SomeMethod;
foo(10, "Hi", "There");

Note that the method group conversion will have to match a method which takes a string array - you couldn't declare SomeMethod as:

void SomeMethod(int x, string a, string b)

and expect the above to work, for example. It would have to be:

void SomeMethod(int x, string[] args)

(Or it could use params itself, of course.)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...