2012-03-02 2 views
38

C#은 가변 개수의 인수를 지원합니까?C#은 다양한 수의 인수를 지원합니까?

그렇다면 C#은 변수의 인수를 어떻게 지원합니까?

예제는 무엇입니까?

가변 인수는 어떻게 유용합니까?

편집 1 : 제한 사항은 무엇입니까?

편집 2 : 문제는 옵션 PARAM 그러나 변수 파람

답변

60

예. 고전적인 예는 params object[] args 수 wourld :

//Allows to pass in any number and types of parameters 
public static void Program(params object[] args) 

전형적인 유스 케이스는 문자열로의 패스 프로그램에 명령 행 환경에 매개 변수를 전달하는 것입니다. 프로그램은이를 검증하고 정확하게 할당해야합니다.

제한 :

  • 하나 개의 params 키워드가 방법 그것은 마지막 매개 변수이어야한다
  • 당 허용됩니다.

편집 : 편집 한 내용을 읽은 후에 광산을 만들었습니다. 아래 부분은 변수 수를 얻기위한 방법을 다루지 만 실제로는 params 방법을 찾고 있다고 생각합니다.


또한

더 고전적인 것들 중 하나는, 과부하 방법이라고합니다.

//both methods have the same name and depending on wether you pass in a parameter 
//or not, the first or the second is used. 
public static void SayHello() { 
    Console.WriteLine("Hello"); 
} 
public static void SayHello(string message) { 
    Console.WriteLine(message); 
} 

마지막으로 가장 종료 한 : 선택적 인수

//this time we specify a default value for the parameter message 
//you now can call both, the method with parameter and the method without. 
public static void SayHello(string message = "Hello") { 
    Console.WriteLine(message); 
} 

http://msdn.microsoft.com/en-us/library/dd264739.aspx

+0

RPC를 통해 매개 변수를 전달하는 방법 당신은 아마 이미 많이 썻다 자바에서 JSON 데이터 형식으로? –

10

예에 관하여이지 않는다, params :

public void SomeMethod(params object[] args) 

PARAMS는 마지막 인자로 가지고 있으며, 모든 유형이 될 수 있습니다. 배열 또는 IEnumerable인지 여부는 확실하지 않습니다.

12

C#은 params 키워드를 사용하여 가변 길이 매개 변수 배열을 지원합니다.

다음은 예입니다.

public static void UseParams(params int[] list) 
{ 
    for (int i = 0; i < list.Length; i++) 
    { 
     Console.Write(list[i] + " "); 
    } 
    Console.WriteLine(); 
} 

자세한 내용은 here입니다.

6

나는 variable number of method parameters을 의미한다고 가정합니다. 그렇다면 :

void DoSomething(params double[] parms) 

(또는 고정 된 매개 변수와 혼합)

void DoSomething(string param1, int param2, params double[] otherParams) 

제한 : 그들은 모든 (또는 하위 유형) 동일한 유형이어야합니다

  • 을로는 마찬가지입니다 배열도 가능
  • 각 메소드 당 하나만있을 수 있습니다.
  • 매개 변수 li에 마지막으로 와야합니다 st

다른 사람들도있을 수 있지만 그 순간 나는 생각할 수 있습니다. 자세한 내용은 설명서를 확인하십시오.

관련 문제