Мне кажется, что есть очень важный момент, который здесь не обсуждается, и это то, что , если вы определили тип делегата, который принимает аргумент params
, очень мало смысла вызывать DynamicInvoke
на это вообще . Сценарий only , который я могу себе представить, заключается в том, что если у вас есть делегат пользовательского типа и вы передаете его в качестве параметра какому-либо методу, который принимает аргумент Delegate
и вызывает DynamicInvoke
на , что .
Но давайте посмотрим на этот код в обновлении ОП:
delegate void Foo(params string[] strings);
static void Main(string[] args)
{
Foo x = strings =>
{
foreach(string s in strings)
Console.WriteLine(s);
};
x.DynamicInvoke(new[]{new string[]{"1", "2", "3"}});
}
Вызов DynamicInvoke
, приведенный выше, совершенно лишний. Для последней строки было бы гораздо разумнее прочитать:
x("1", "2", "3");