c# out 예제

c# out 예제
0 August 2, 2019

Mads Torgersen에 따르면 Microsoft는 메서드의 out 매개 변수를 무시하려는 경우 와일드카드 `*` 기호를 매개 변수 이름으로 포함할 계획입니다. 그러나 이 기능이 C# 7.0의 일부가 될지는 확실하지 않습니다. 예를 들어 위의 코드 조각에서 게시된Year 매개 변수에 대해 신경 쓰지 않는다면 `*`로 바꿀 수 있습니다. C# 6 이상에서는 변수를 out 인수로 전달하기 전에 별도의 문에서 변수를 선언해야 합니다. 다음 예제에서는 문자열을 숫자로 변환하려고 시도하는 Int32.TryParse 메서드에 전달되기 전에 명명된 변수를 선언합니다. in, ref 및 out 키워드는 오버로드 확인을 위해 메서드 서명의 일부로 간주되지 않습니다. 따라서 한 메서드가 ref 또는 인수를 취하고 다른 메서드가 인수를 사용하는 경우 메서드를 오버로드할 수 없습니다. 예를 들어 다음 코드는 컴파일되지 않습니다: 이전 C# 버전에서는 Out 변수의 선언 및 초기화를 두 개의 다른 문으로 구분해야 합니다. C# 7.0은 Out 매개 변수가 선언 및 초기화 없이 전달할 수 있는 이 기능을 제공합니다.

예제를 살펴보겠습니다. C#은 이 상황에 대한 out 매개 변수 수정자를 제공합니다. out 한정자는 참조 매개 변수가 발생해야 하는 요구 사항을 제거합니다. GetTime()에 대한 매개 변수는 메서드에 정보를 제공하지 않습니다. 그들은 단순히 그것의 정보를 얻기위한 메커니즘입니다. 따라서 세 가지 를 모두 out 매개 변수로 표시하면 메서드 외부에서 초기화할 필요가 없습니다. 호출된 메서드 내에서 out 매개 변수는 메서드가 반환하기 전에 값을 할당해야 합니다. 다음은 GetTime() : 출력 매개 변수에 대해 제공된 변수에 대한 변경된 매개 변수 선언이 값을 할당할 필요가 없습니다.

출력 매개 변수는 매개 변수에 초기 값을 할당하지 않고 메서드에서 매개 변수를 통해 값을 반환해야 하는 경우에 특히 유용합니다. 이것을 이해하기 위해 다음 예제를 통해 이동 – 이전 예제에서, 숫자 변수는 강하게 int로 입력됩니다. 다음 예제와 마찬가지로 암시적으로 형식이 입력된 지역 변수를 선언할 수도 있습니다. 예제를 만들어 보겠습니다. 정수 배열에서 연속 시퀀스로 정렬할 수 있는 숫자를 포함하는 가장 긴 하위 배열의 길이를 찾습니다. 위의 예에서는 ref와 out 키워드의 차이점을 확인할 수 있습니다. 처음 몇 줄에서는 val1이 ref 키워드를 사용하여 인수를 통과하므로 val1이 아닌 val2에 값을 할당합니다. out 키워드 값 (val2)은 호출 된 메서드가 호출 메서드에 전달되기 전에 호출 된 메서드에서 정의되어야하기 때문에 호출 된 메서드가 코드 끝을 향할 때까지 정의되지 않습니다. 위의 호출 메서드는 콘솔에 기록될 매개 변수의 값을 요청하므로 출력은 각각 val1(참조) 및 val2(출력)에 대해 7과 9가 됩니다.

C # 7.0으로 시작 하면 메서드 호출의 인수 목록에서 out 변수를 선언할 수 있습니다. 이렇게 하면 더 작고 읽을 수 있는 코드가 생성되며 메서드 호출 전에 변수에 값을 실수로 할당할 수 없습니다. 다음 예제는 Int32.TryParse 메서드에 대한 호출의 숫자 변수를 정의한다는 점을 제외하면 이전 예제와 같습니다. out 키워드로 인해 인수가 참조로 전달됩니다. 형식 매개 변수를 변수여야 하는 인수의 별칭으로 만듭니다. 즉, 매개 변수에 대한 모든 작업은 인수에서 수행됩니다. 참조가 전달되기 전에 변수를 초기화해야 한다는 점을 제외하면 ref 키워드와 같습니다.

Posted by medmedia