out var
변환 할경우 변수를 toNum 처럼 만들어야 하는데 이를 좀 더 간결하게
out var 로 대체가 가능하다 C# 7.0 부터..
1 2 3 4 5 6 7 8 9 10 | int toNum; if(int.TryParse("1234", out toNum)) { Console.WriteLine(toNum); } if(int.TryParse("1234", out var num)) { Console.WriteLine(num); } | cs |
out
인수를 사용하여 메서드 호출
C# 6 및 이전 버전에서는 out
인수로 전달하기 전에 별도 문에서 변수를 선언해야 합니다.
다음 예제에서는 Int32.TryParse 메서드에 전달되기 전에 number
라는 변수를 선언합니다.
이 메서드는 문자열을 숫자로 변환하려고 합니다.
string numberAsString = "1640"; int number; if (Int32.TryParse(numberAsString, out number)) Console.WriteLine($"Converted '{numberAsString}' to {number}"); else Console.WriteLine($"Unable to convert '{numberAsString}'"); // The example displays the following output: // 결과 : Converted '1640' to 1640
C# 7.0부터 별도 변수 선언이 아니라 메서드 호출의 인수 목록에서 out
변수를 선언할 수 있습니다.
이렇게 하면 보다 간결하고 읽기 쉬운 코드가 생성되며 메서드 호출 전에 실수로
변수에 값이 할당되는 경우를 방지할 수 있습니다.
다음 예제는 Int32.TryParse 메서드 호출에서 number
변수를 정의한다는 점을 제외하고 이전 예제와 비슷합니다.
string numberAsString = "1640"; if (Int32.TryParse(numberAsString, out int number)) Console.WriteLine($"Converted '{numberAsString}' to {number}"); else Console.WriteLine($"Unable to convert '{numberAsString}'"); // The example displays the following output: // 결과 : Converted '1640' to 1640
앞의 예제에서 number
변수는 int
로 강력하게 형식화됩니다.
다음 예제와 같이 암시적 형식 지역 변수를 선언할 수도 있습니다.
string numberAsString = "1640"; if (Int32.TryParse(numberAsString, out var number)) Console.WriteLine($"Converted '{numberAsString}' to {number}"); else Console.WriteLine($"Unable to convert '{numberAsString}'"); // The example displays the following output: // 결과 Converted '1640' to 1640
ref : https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/out-parameter-modifier