2014-02-26 4 views
3

1 개의 필수 인수와 4 개의 선택적 2D 배열 인수가있는 함수를 선언하고 싶습니다. 어떻게해야합니까? 나는 인수를 선택적으로 만드는 것을 알고, 함수 생성 중에 값을 넣어야한다. 나는 또한 아래 한 무엇이 잘못되었는지를보고하고 "Array initializers can only be used in a variable or field initializer. Try using a new expression instead." 오류C#의 인수로 선택적 다차원 배열

private String communicateToServer(String serverHostname, 
           String[,] disk = new string[] {{"dummy","dummy"}}, 
           String[,] hdd= new string[] {{"dummy","dummy"}} 
           String[,] nic= new string[] {{"dummy","dummy"}} 
           String[,] disk = new string[] {{"dummy","dummy"}} 
) 
+1

당신은 그렇게 할 수 없습니다. – SLaks

+2

대신에 디폴트 값'null'을 만들고, 함수에서'disk = disk ?? new string [] {..}; ' – Blorgbeard

답변

4

이 직접이 작업을 수행하는 것은 불가능하지만, 다음과 같은 패턴

private String communicateToServer(String serverHostname, 
            String[,] disk = null, 
            String[,] hdd= null, 
            String[,] nic= null) { 

    disk = disk ?? new string[] {{"dummy","dummy"}}, 
    hdd= hdd ?? new string[] {{"dummy","dummy"}} 
    nic= nic ?? new string[] {{"dummy","dummy"}} 

    ... 
} 
을 수행하여 비슷한 효과를 얻을 수있다

기본적으로 null을 기본값으로 사용하고 null이 실제 기본값으로 변환되는 값인 경우. 즉, 명시적인 null이 전달되면 기본값으로 해석됩니다.

+0

+1이 이것을 수행하는 유일한 방법이기 때문에 의도적으로 null을 전달하는 기능을 제거하는 부작용이 있다는 것을 알아 두는 것이 중요합니다. – McAden

+0

@McAden 그 부작용은 마지막 문장에 기록되어 있습니다 :) – JaredPar

+0

오, 그래서 그냥 내 목표에 도달 null 검사기를 남겨주세요 - 두들겨 - 제거 if (hdd! = null) {2D Array values}, 감사 인사와 건배 =) – Fukkatsu