저는 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
배열 참조 또는 단일 배열 요소로 처리 되는지 여부를 기억해야합니다 . ( 컴파일러는 필요한 경우에만 배열을 생성 한다고 생각 하지만 기억할 필요가 없도록 코드를 작성하는 경향이 있습니다.)
답변
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);