[c#] Java의 vararg 매개 변수에 대한 C # 대안이 있습니까?

저는 Java에서 일했고 .Net 기술을 처음 접했습니다.

변수 입력 매개 변수를 허용하는 함수를 C #으로 선언 할 수 있습니까?

다음 Java 구문과 유사한 C # 구문이 있습니까?

void f1(String... a)



답변

예, C #에는 varargs 매개 변수와 동일한 기능이 있습니다. 매개 변수 배열 이라고 하며 params수정 자 와 함께 도입됩니다 .

public void Foo(int x, params string[] values)

그런 다음 다음과 같이 호출하십시오.

Foo(10, "hello", "there");

Java와 마찬가지로 이와 같이 변할 수있는 마지막 매개 변수 일뿐입니다. Java와 마찬가지로 매개 변수 params object[] objects는 유형의 단일 인수가 object[]다시 래핑 되는지 여부를 기억해야하므로 쉽게 혼동을 일으킬 수 있습니다 . nullable 형식의 경우와 마찬가지로의 단일 인수가 null배열 참조 또는 단일 배열 요소로 처리 되는지 여부를 기억해야합니다 . ( 컴파일러는 필요한 경우에만 배열을 생성 한다고 생각 하지만 기억할 필요가 없도록 코드를 작성하는 경향이 있습니다.)


답변

매개 변수 살펴보기 (C # 참조)

params 키워드를 사용하면 가변 개수의 인수를 사용하는 메서드 매개 변수를 지정할 수 있습니다.

매개 변수 선언에 지정된 유형의 쉼표로 구분 된 인수 목록 또는 지정된 유형의 인수 배열을 보낼 수 있습니다. 인수를 보낼 수도 없습니다.

메서드 선언에서 params 키워드 뒤에는 추가 매개 변수가 허용되지 않으며 메서드 선언에는 하나의 params 키워드 만 허용됩니다.

예제에서 볼 수 있듯이 메서드는 다음과 같이 선언됩니다.

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

그리고로 사용

UseParams(1, 2, 3, 4);


답변