0Pricing
C# Academy · 강의

HasValue 및 Value 속성

널 허용 값을 안전하게 검사하고 액세스합니다.

HasValue 및 Value 속성은(는) CoddyKit의 무료 C# Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C# Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C# Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

두 가지 핵심 속성

모든 널 허용 값에는 HasValue(a bool)와 Value(기본 형식의 값)가 있습니다. 이 속성들을 사용하면 널 허용 값을 안전하게 검사할 수 있습니다.

using System;

class Program {
    static void Main() {
        int? n = 5;
        Console.WriteLine(n.HasValue);
        Console.WriteLine(n.Value);
    }
}

HasValue로 값 존재 여부 확인

실제 값이 있으면 HasValue는 true이고, 널이면 false입니다.

using System;

class Program {
    static void Main() {
        int? a = 10;
        int? b = null;
        Console.WriteLine(a.HasValue);
        Console.WriteLine(b.HasValue);
    }
}

Value 안전하게 읽기

Value를 읽기 전에 항상 HasValue를 확인하십시오. 널인 상태에서 Value를 읽으면 예외가 발생하기 때문입니다.

using System;

class Program {
    static void Main() {
        int? n = 42;
        if (n.HasValue) {
            Console.WriteLine(n.Value * 2);
        }
    }
}

널에서 Value에 접근하면 예외 발생

널 허용 값이 널일 때 Value를 읽으면 C#은 InvalidOperationException을 발생시킵니다. 확인 절차를 거치면 이를 방지할 수 있습니다.

using System;

class Program {
    static void Main() {
        int? n = null;
        try {
            Console.WriteLine(n.Value);
        } catch (InvalidOperationException) {
            Console.WriteLine("Caught: no value");
        }
    }
}

GetValueOrDefault

GetValueOrDefault()는 값이 있으면 그 값을 반환하고, 그렇지 않으면 형식의 기본값을 반환합니다. 예를 들어 int는 0, bool은 거짓입니다.

using System;

class Program {
    static void Main() {
        int? n = null;
        Console.WriteLine(n.GetValueOrDefault());
    }
}

GetValueOrDefault와 대체값

인수를 전달하여 원하는 대체값을 선택할 수 있습니다. GetValueOrDefault(99)는 널일 때 99를 반환합니다.

using System;

class Program {
    static void Main() {
        int? n = null;
        Console.WriteLine(n.GetValueOrDefault(99));
        int? m = 7;
        Console.WriteLine(m.GetValueOrDefault(99));
    }
}

패턴: 확인 후 사용

일반적인 패턴은 HasValue와 Value를 결합하여 깔끔한 분기를 만드는 것입니다.

using System;

class Program {
    static void Describe(int? score) {
        if (score.HasValue)
            Console.WriteLine("Score is " + score.Value);
        else
            Console.WriteLine("No score yet");
    }
    static void Main() {
        Describe(88);
        Describe(null);
    }
}

일반 형식으로의 암시적 변환

널 허용 값에 값이 있는지 확인한 후에만 일반 형식의 변수에 할당하고 Value를 읽을 수 있습니다.

using System;

class Program {
    static void Main() {
        int? maybe = 15;
        if (maybe.HasValue) {
            int real = maybe.Value;
            Console.WriteLine(real + 5);
        }
    }
}

널 허용 형식의 기본값

명시적으로 설정하지 않은 널 허용 값의 기본값은 널이므로 HasValue는 false입니다.

using System;

class Program {
    static void Main() {
        int? n = default;
        Console.WriteLine(n.HasValue);
    }
}

집계에 사용하기

데이터를 반복 처리하면서 HasValue가 없는 널 값을 건너뛰면 안전하게 합계를 계산할 수 있습니다.

using System;

class Program {
    static void Main() {
        int?[] readings = { 10, null, 5, null, 8 };
        int sum = 0;
        foreach (var r in readings)
            if (r.HasValue) sum += r.Value;
        Console.WriteLine(sum);
    }
}

반복문에서 GetValueOrDefault 사용

널을 0으로 처리해야 하는 코드에서는 GetValueOrDefault를 사용하면 코드를 단순하게 만들 수 있습니다.

using System;

class Program {
    static void Main() {
        int?[] readings = { 10, null, 5 };
        int sum = 0;
        foreach (var r in readings)
            sum += r.GetValueOrDefault();
        Console.WriteLine(sum);
    }
}

빠른 확인

널 허용 속성에 대한 지식을 확인해 보십시오.

복습

HasValue는 널 허용 값이 값을 저장하고 있는지 알려 주고, Value는 그 값을 가져옵니다. 하지만 널인 상태에서 Value를 읽으면 예외가 발생합니다.

GetValueOrDefault()는 값이나 대체값을 안전하게 반환합니다. 대체값은 형식의 기본값이거나 직접 지정한 값일 수 있으며, 따라서 합계 계산과 안전한 값 읽기에 적합합니다.

자주 묻는 질문

“HasValue 및 Value 속성” 강의는 무료인가요?

네 — “HasValue 및 Value 속성” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C# Academy 강의 전체를 잠금 해제할 수 있습니다. C# Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“HasValue 및 Value 속성”에서 뭘 배우나요?

널 허용 값을 안전하게 검사하고 액세스합니다. 브라우저에서 직접 실행하는 실습 코드로 C# Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

C# Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 C# Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“HasValue 및 Value 속성” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 C# Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 C# Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 널 허용 값 형식 소개
  2. HasValue 및 Value 속성
  3. 널 병합 연산자
  4. 계산에서의 Nullable
← C# Academy(으)로 돌아가기