2013-04-02 12 views
10

Mam funkcję void Test(int id, params string[] strs).Przypisywanie tablicy string [] do funkcji z ciągami parametrów []

Jak przekażę tablicę ciągów znaków jako argument strs? Kiedy zadzwonię:

Test(1, "a, b, c"); 

Przyjmuje "strs" jako pojedynczy ciąg (nie tablicę).

+2

Jaki błąd występuje, jeśli aktualny kod nie działa? – NilsH

+1

Jakiego języka używasz? – Simon

+0

Używam C#. Problem, który udało mi się rozwiązać, po prostu przypisując cały ciąg tablicowy do ciągu znaków []. –

Odpowiedz

7

testowałem to i to działa:

private void CallTestMethod() 
    { 
     string [] strings = new string [] {"1", "2", "3"}; 
     Test(1, strings); 

    } 

    private void Test(int id, params string[] test) 
    { 
     //Do some action with input 
    } 

można nazwać po prostu tak Test(1, <Some string[]>);

Edit

Od MSDN website on params:

Słowo kluczowe params pozwala określasz parametr metody er, który pobiera zmienną liczbę argumentów o wartości . Możesz wysłać listę oddzielonych przecinkami argumentów o typie określonym w deklaracji parametru lub o tablicy argumentów określonego typu. Możesz także wysyłać argumenty w liczbie nieszej niż . Po parametrze w deklaracji metody nie są dozwolone żadne dodatkowe parametry, a tylko jedno słowo kluczowe params to dozwolone w deklaracji metody.

Można więc również wywołać metodę Test podobną do tej Test(1); bez błędów kompilatora.

24

Właściwie The params jest po prostu cukier syntaktyczny obsługiwane przez # kompilator C, tak że

to:

void Method(params string[] args) { /**/ } 
Method("one", "two", "three"); 

staje się w ten sposób:

void Method(params string[] args) { /**/ } 
Method(new string[] { "one", "two", "three" }) 
1

Wypróbuj to.

var myStringArray = new string[] {"a", "b", "c"}; 
Test(myStringArray) 
Powiązane problemy