[C#] _에 값을 할당하는 경우(discard operator)
작성날짜 2024/08/22
_ = await HandleSomething();
이렇게 생긴 기묘한 코드를 발견했다.
자료형도 없고 이게 뭔가 싶어서 찾아보니 'discard operator'라고 하며 함수가 반환한 값을 사용하지 않을 것임을 명시할 때 쓴다고 한다.
이렇게 하면 컴파일러가 사용하지 않을 값임을 알고 최적화를 하게 된다.
또는 이런 사용 방법도 있다.
var (_, _, _, pop1, _, pop2) = QueryCityDataForYears("New York City", 1960, 2010);
Console.WriteLine($"Population change, 1960 to 2010: {pop2 - pop1:N0}");
static (string, double, int, int, int, int) QueryCityDataForYears(string name, int year1, int year2)
{
int population1 = 0, population2 = 0;
double area = 0;
if (name == "New York City")
{
area = 468.48;
if (year1 == 1960)
{
population1 = 7781984;
}
if (year2 == 2010)
{
population2 = 8175133;
}
return (name, area, year1, population1, year2, population2);
}
return ("", 0, 0, 0, 0, 0);
}
// The example displays the following output:
// Population change, 1960 to 2010: 393,149
QueryCityDataForYears함수는 6개의 변수를 반환하지만 위의 코드에서는 _ 연산자를 활용하여 필요한 데이터 외에는 무시하고 pop1과 pop2 변수만 반환받는다.
참고: https://stackoverflow.com/questions/6308078/c-sharp-variable-name-underscore-only , https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/functional/discards