Инициализация строкового массива в вызове метода в качестве параметра в C # - PullRequest
6 голосов
/ 13 сентября 2009

Если у меня есть такой метод:

public void DoSomething(int Count, string[] Lines)
{
   //Do stuff here...
}

Почему я не могу так это назвать?

DoSomething(10, {"One", "Two", "Three"});

Что будет правильным (но, надеюсь, не долгим путем)?

Ответы [ 4 ]

16 голосов
/ 13 сентября 2009

вы можете сделать это:

DoSomething(10, new[] {"One", "Two", "Three"});

при условии, что все объекты одного типа, вам не нужно указывать тип в определении массива

9 голосов
/ 13 сентября 2009

Если DoSomething - это функция, которую вы можете изменить, вы можете использовать ключевое слово params для передачи нескольких аргументов без создания массива. Он также будет правильно принимать массивы, поэтому нет необходимости «деконструировать» существующий массив.

class x
{
    public static void foo(params string[] ss)
    {
        foreach (string s in ss)
        {
            System.Console.WriteLine(s);
        }
    }

    public static void Main()
    {
        foo("a", "b", "c");
        string[] s = new string[] { "d", "e", "f" };
        foo(s);
    }
}

Выход:

$ ./d.exe 
a
b
c
d
e
f
2 голосов
/ 13 сентября 2009

Вы можете создать его, передав его так:

DoSomething(10, new string[] { "One", "Two", "Three"});
2 голосов
/ 13 сентября 2009

Попробуйте это:

DoSomething(10, new string[] {"One", "Two", "Three"});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...