2014-12-01 6 views
1

매개 변수로 객체의 배열을 허용하는 일반적인 방법이 있습니다.객체를 객체 배열로 전달

이제 함수 호출에 하나의 객체 만 전달해야하는 경우가 있습니다. 코드와 메모리의 라인을 저장하려면, 내가 인라인 그 일을 시도 :

func(new ObjectType(param)); 

그러나 객체의 배열을 기대로이 컴파일되지 않습니다. 이 객체를 함수 호출 내에서 배열로 변환하려면 어떻게해야합니까? (다른 생성자 또는 연산자 오버로딩이 필요합니까?)

+1

'new Object [] {object_i_want_in_array}'? 아니면 그런 식으로? 또는 함수를 재정의하여 하나만 가져 오면됩니까? – crashmstr

답변

4

함수 서명이 func(object[] items)이라고 가정합니다.

몇 가지 옵션 :

  • 새로운 배열을 만들 : func(new[] { new ObjectType(param) })

  • 는 하나의 매개 변수를 새로운 과부하를 추가 : func(object item)

  • 변화 params에 서명 : func(params object[] items). 이

    MyFunc("foo"); // pass single string 
    MyFunc(new string[] {"foo", "bar"}); // pass array 
    

    같은

    private void MyFunc(params string[] args) 
    { 
        foreach(string s in args) 
        { 
         Console.WriteLine(s); 
        } 
    } 
    

    테스트는 솔직히 말해서이 (예 func(item1, item2, item3))

+0

첫 번째 옵션으로 기본 생성자를 재정의했습니다. 그래서 나는 그것이 효과가 없을 것이라고 생각합니다. 세 번째 옵션은 좋은 것 같습니다. – Saksham

+0

생성자와 관련이 있는지 잘 모르겠습니다. 'func'이 무엇인지, 선언 된 곳을 명확히하기 위해 더 많은 코드를 게시해야 할 수도 있습니다. –

+0

C# – Jcl

0

params 키워드 만들기 사용 배열 이상의 객체의 제로를 취할 것 , 컴파일러는 단일 문자열을 전달하면 단일 요소로 새 배열을 만드는 코드를 생성합니다. 이 기능이 매우 중요한 기능이라는 점을 제외하고는 문제가되지 않습니다.