728x90

📘 개념 요약

C# 8.0부터 참조형 변수에도 nullable을 명시적으로 설정할 수 있습니다. 이는 NullReferenceException을 컴파일 타임에 예방할 수 있게 해줍니다.


🧠 용어 설명

용어 설명
string? null 허용 참조형
#nullable enable 해당 파일에서 null 검사 기능 켜기
NullReferenceException null 값을 접근 시 발생하는 런타임 예외
 

💻 코드 예제

#nullable enable
class User
{
    public string? Name { get; set; }  // null 허용
    public string Email { get; set; } = "default@site.com";  // non-null
}

class Program
{
    static void Main()
    {
        User u = new User();
        if (u.Name != null)
        {
            Console.WriteLine(u.Name.Length); // null 체크 후 안전하게 사용
        }
    }
}

🔧 사용법 정리

  • string? 은 null 허용, string은 허용하지 않음
  • null 상태를 컴파일러가 경고로 알려줌
  • 안정성 높은 코드 작성 가능

🏷 추천 태그

C# 8.0, nullable, null 참조 방지, NRE 방지, 프로그래밍 안정성, 참조형, 컴파일러 경고

728x90
728x90

1. 상수(Constant)

  • 정의: 값을 절대 변경할 수 없는 메모리 공간.
  • 선언 방법:
const 자료형 상수명 = 값;
  • 예시:
const int a = 30; 
const string greeting = "Hello, World!";

2. 열거 형식(Enum)

  • 정의: 종류는 같지만 서로 다른 값을 가지는 상수의 집합.
  • 기반 자료형: 정수 계열만 사용 가능 (byte, sbyte, short, ushort, int, uint, long, ulong, char). 기본값은 int.

a. 선언 방법

enum 열거형식명 : 기반자료형 { 상수1, 상수2 } 
enum 열거형식명 { 상수1 = 값1, 상수2 = 값2 } 
enum 열거형식명 { 상수1 = 값1, 상수2, 상수3 = 값3 }

b. 예시

enum Color { Red = 1, Green = 2, Blue = 3 } 
enum Status : byte { Active = 1, Inactive = 0 }
 

c. 열거형 활용

  • 값 확인:
Console.WriteLine((int)Color.Red); // 출력: 1
  • 열거형 값을 문자열로 출력:
Console.WriteLine(Color.Green); // 출력: Green

3. Nullable 형식

  • 정의: 값이 없을 수 있는 변수 형식.
  • 선언 방법:
데이터형식? 변수이름;

a. 예시

int? a = null; // Nullable 형식 
if (a.HasValue) // 값이 있는지 확인
{
	Console.WriteLine(a.Value); 
} 
else 
{
	Console.WriteLine("No value"); 
}

b. Nullable 속성

  • HasValue: 값이 있는지 확인 (true 또는 false).
  • Value: 변수에 담긴 값 반환.

4. var 형식

  • 정의: 변수에 담긴 데이터에 따라 컴파일러가 자동으로 형식을 지정.
  • 주의사항:
    • 선언과 동시에 값을 초기화해야 함.
    • 지역 변수로만 사용 가능.

예시

var x = 10;        // 컴파일러가 int로 추론
var y = "Hello";   // 컴파일러가 string으로 추론
// var z;           // 오류: 초기화 필요

 


5. 공용 형식 시스템 (CTS)

  • 정의: .NET 프레임워크의 형식 체계 표준.
  • C#의 모든 데이터 형식은 CTS를 기반으로 하며, 다른 .NET 언어들과의 호환성을 보장.
  • 예시:
    • C#의 int는 CTS의 System.Int32에 매핑.
    • C#의 string은 CTS의 System.String에 매핑.

정리

  • 상수: 변경할 수 없는 고정된 값.
  • 열거형: 특정 그룹의 상수를 관리하기 위한 형식.
  • Nullable: 값이 없음을 표현.
  • var: 데이터 형식을 자동 추론.
  • CTS: .NET에서 데이터 형식의 표준을 정의.
728x90

+ Recent posts