Back to top

[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

An unhandled error has occurred. Reload 🗙