C#을

2009-09-13 3 views
5

에서 매개 변수로 메서드 호출의 문자열 배열을 초기화?C#을

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

옳은 것은 무엇입니까?

답변

16

당신은이 작업을 수행 할 수 있습니다

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

제공하는 모든 객체가 같은 유형이 배열 정의 유형을 지정할 필요가 없습니다

+2

딱! 그래도 새 []가 필요한 이유를 설명해 주시겠습니까? 내가했다면 : string [] MyString = { "One", "Two", "Three"}; 그것은 잘 작동합니까? –

+1

구문이 작동하는 방식. 당신은 이것을 할 수 없습니다 : var x = string [] { "One", "Two", "Three"}; 그러나 당신은 이것을 할 수 있습니다 var y = new [] { "One", "Two", "Three"}; –

+1

이 기사는 매우 유용합니다. 객체 이니셜 라이저는 코드 sooo를 훨씬 더 깨끗하게 만듭니다. http://weblogs.asp.net/scottgu/archive/2007/03/08/new-c-orcas-language-features-automatic-properties-object-initializers-and-collection-initializers .aspx 및 원래 질문에 대한 자세한 내용은 다음을 참조하십시오. http://msdn.microsoft.com/en-us/library/ms364047(VS.80).aspx#cs3spec_topic7 –

2

이 시도 :

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

다음과 같이 전달하여 구성 할 수 있습니다.

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

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 
+0

이것은 훌륭한 제안이기도합니다! –