C# 메서드에는 값 매개변수, 참조 매개변수, 출력 매개변수, 매개변수 배열, 명명된 매개변수, 선택적 매개변수 등 6가지 유형의 매개변수가 있습니다. 다음 기사에서 이를 소개하겠습니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.
값 매개변수
값 매개변수는 메소드의 기본 유형입니다. 메소드가 호출되면 실제 매개변수의 값을 복사하여 메소드에 데이터가 전달됩니다. 시스템은 2단계 작업을 수행합니다.
1. 스택에 형식 매개변수를 위한 공간을 할당합니다.
2. 실제 매개변수를 형식 매개변수에 복사합니다.
1) 메소드가 호출되기 전에 실제 매개변수로 사용된 변수 a1의 참조가 이미 스택에 있습니다.
2) 메서드가 시작되면 시스템은 스택에 형식 매개변수를 위한 공간을 할당하고 실제 매개변수의 값을 복사합니다.
3) a1은 참조형이므로 참조가 복사되고, 결과적으로 실제 매개변수와 형식 매개변수 모두 힙에서 동일한 객체를 참조하게 됩니다.
4) a2는 값형이므로 값이 복사되어 독립적인 데이터가 생성됩니다.
5) 메소드가 실행된 후 형식 매개변수가 스택에서 팝됩니다.
6) a2, 값 유형, 해당 값은 메소드 동작에 영향을 받지 않습니다.
7) a1, 참조 유형, 해당 값은 메소드의 동작에 따라 변경됩니다.
참조 매개변수
1. 참조 매개변수를 사용하는 경우 메서드 선언 및 호출에 ref 수정자를 사용해야 합니다.
2. 실제 매개변수는 변수여야 하며 실제 매개변수로 사용되기 전에 값을 할당해야 합니다.
값 매개변수의 경우 시스템은 스택의 형식 매개변수에 메모리를 할당합니다. 반대로 참조 매개변수의 경우 형식 매개변수의 매개변수 이름은 실제 매개변수 변수의 별칭처럼 보입니다. 동일한 메모리 위치로 이동합니다. 따라서 메소드 실행 중 형식 매개변수에 대한 모든 변경사항은 메소드 실행이 완료된 후에도 여전히 유효합니다(실제 매개변수 변수에 표시됨).
참조 매개변수의 전송은 값 유형과 참조 유형 모두에 완전히 전송됩니다. 즉, 동일한 메모리 위치가 참조됩니다.
출력 매개변수
출력 매개변수는 메소드 본문에서 호출 코드로 데이터를 전달하는 데 사용됩니다. 이는 참조 매개변수와 매우 유사합니다.
1. 메소드 선언 및 호출에는 out 수정자를 사용해야 합니다.
2. 참조 매개변수와 유사하게 실제 매개변수는 변수여야 합니다.
참조 매개변수와 마찬가지로 출력 매개변수의 형식 매개변수는 실제 매개변수의 별칭 역할을 합니다. 메서드 내 형식 매개변수에 대한 모든 변경 사항은 메서드 실행이 완료된 후 실제 매개변수 변수를 통해 표시됩니다.
참조 매개변수와 달리 출력 매개변수에는 다음 두 가지 요구 사항이 있습니다.
1. 메소드 내에서 출력 매개변수는 읽기 전에 값을 할당해야 합니다. 즉, 매개변수의 초기 값은 관련이 없으므로 메소드가 호출되기 전에 실제 매개변수에 값을 할당할 필요가 없습니다. .
2. 메서드가 반환되기 전에 메서드를 통해 가능한 모든 경로가 모든 출력 매개변수에 한 번 할당되어야 합니다.
매개변수 배열
위의 세 가지 매개변수 방법에서는 하나의 실제 매개변수가 하나의 형식 매개변수와 엄격하게 일치해야 합니다. 매개변수 배열은 0개 이상의 실제 매개변수가 특수 형식 매개변수에 대응되도록 허용합니다.
매개변수 배열에 대한 요구사항은 다음과 같습니다.
1. 매개변수 목록에는 매개변수 배열이 하나만 있을 수 있습니다.
2. 있는 경우 목록의 마지막 항목이어야 합니다.
매개변수 배열을 선언하려면 params 수정자가 있어야 하며(호출에는 수정자가 필요하지 않음) 한 가지 유형의 배열이어야 합니다.
분산 매개변수 전달을 사용할 때 컴파일러는 다음을 수행합니다.
1) 실제 매개변수 목록을 수락하고 이를 사용하여 힙에서 배열을 만들고 초기화합니다.
2) 배열의 참조를 스택의 형식 매개변수에 저장합니다.
3) 해당 형식 매개변수 그룹 위치에 실제 매개변수가 없는 경우 컴파일러는 요소가 0개인 배열을 생성하여 사용합니다.
4) 배열 매개변수가 값 유형인 경우 값이 복사되고 실제 매개변수는 메소드 내에서 영향을 받지 않습니다.
5) 배열 매개변수가 참조 유형인 경우 참조가 복사되고 실제 매개변수가 참조하는 객체가 메서드 내에서 영향을 받을 수 있습니다.
배열 매개변수 전달을 사용할 때 컴파일러는 데이터를 다시 생성하는 대신 데이터를 사용합니다. 이는 참조 매개변수와 동일합니다.
명명된 매개변수
위에 사용된 4개의 매개변수는 모두 위치 매개변수입니다. 즉, 각 실제 매개변수의 위치는 해당 형식 매개변수 위치와 일치해야 함을 의미합니다.
.Net4.0부터는 지정된 매개변수의 이름만 표시되면 실제 매개변수는 메소드 호출에서 순서에 상관없이 나열될 수 있습니다.
1. 메소드 선언에는 차이가 없습니다. 형식 매개변수에는 이미 이름이 있습니다.
2. 그러나 메소드를 호출할 때 형식 매개변수 이름 뒤에는 콜론과 실제 매개변수 값 또는 표현식이 옵니다.
' s ‐ ‐ ‐ ‐ ‐ ,
호출 시 위치 매개변수와 명명된 매개변수를 혼합할 수도 있습니다. , 그러나 모든 위치 매개변수가 먼저 나열되어야 합니다. #🎜 🎜## 🎜🎜# 선택 매개변수선택 매개변수는 .Net4입니다. .0 방금 추가한 것으로, 메소드 호출 시 이 매개변수를 포함하거나 생략할 수 있습니다.
매개변수가 선택사항임을 나타내려면 메소드 선언 시 매개변수의 기본값을 제공해야 합니다. 기본값을 지정하는 구문은 지역 변수를 초기화하는 구문과 동일합니다. 아래와 같이1) 형식 매개변수 b는 기본값으로 설정됩니다. 2) 따라서 메소드 호출 시 매개변수는 1개뿐이고, 메소드에서는 두 번째 매개변수의 초기화로 3을 사용하게 됩니다.선택적 매개변수 선언과 관련하여 몇 가지 중요한 사항이 있습니다.
1 모든 매개변수 유형이 허용되는 것은 아닙니다. 선택적 매개변수입니다. 1) 값 유형의 기본값은 컴파일 타임에 결정될 수 있는 한, 값 유형을 선택적 매개변수로 사용할 수 있습니다. 2) 참조 유형은 기본값이 null인 경우에만 선택적 매개변수로 사용할 수 있습니다. 3). 선택적 매개변수는 값 매개변수만 될 수 있습니다. 2. 필수 매개변수는 모두 선택 매개변수 선언 전에 선언해야 합니다. params 매개변수가 있는 경우 모든 선택 매개변수 뒤에 선언해야 합니다. 3. 선택적 매개변수 목록의 끝부터 처음까지 생략해야 합니다. 그렇지 않으면 매개변수 모호성이 발생합니다. 4. 매개변수 모호성을 제거하려면 명명된 매개변수와 선택적 매개변수의 기능을 결합할 수 있습니다. 아래 표시됨이 기사는 C#.Net 튜토리얼
컬럼에서 가져온 것입니다. 학습에 오신 것을 환영합니다!위 내용은 C# 메서드의 6개 매개변수에 대한 간략한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!