두 번째 메소드가 호출되면 정확히 일치하는 항목이 발견되면 params 앞에 사용됩니다.
From MSDN
: 과부하 해상도를 수행 할 때
, 파라미터 배열 방법이 정상 형태 또는 확장 된 형태 (섹션 7.4.2.1)에 하나 적용 할 수있다. 메서드의 확장 된 형식은 메서드의 일반 형식이 적용 가능하지 않고 확장 된 형식과 동일한 서명이있는 메서드가 같은 형식으로 이미 선언되지 않은 경우에만 사용할 수 있습니다.
그들의 예 :
using System;
class Test
{
static void F(params object[] a) {
Console.WriteLine("F(object[])");
}
static void F() {
Console.WriteLine("F()");
}
static void F(object a0, object a1) {
Console.WriteLine("F(object,object)");
}
static void Main() {
F();
F(1);
F(1, 2);
F(1, 2, 3);
F(1, 2, 3, 4);
}
}
출력 : 그들은 F (널)를 호출 할 때
F();
F(object[]);
F(object,object);
F(object[]);
F(object[]);
이 사람들에게 특히 혼란 스럽다. F ((object []) null) 또는 F (new object [] (null))를 얻나요? 많은 사람들이 후자를 기대하지만, 전자가 정상적인 형태로 적용 가능하기 때문에 더 좋습니다. –
@ 에릭 - 절대로 깊이 생각할 수없는 프레임 워크 질문/사실로 나를 놀라게하는 일은 결코 없을 것입니다. 그러나 실제로 몇 달 후 사용하게됩니다. 당신의 대답 중 일부는 저를 위해 엄청난 성능 차이를 만들어 냈습니다. –
주석 라인에 따라 Microsoft에서 게시 한 주석이 달린 사양을 읽지 않은 경우에는 꼭해야합니다. 그것은 금광입니다. – jason