C# 6 - 속성

2015 단어 C#
C#6의 속성에 대한 문법사탕 실현을 기록해 보자. C#6의 속성에 관한 새로운 특성은 주로 두 가지가 있는데 그것이 바로 자동 속성 초기화, 읽기 전용 속성 부여와 읽기이다.

자동 속성 초기화(Auto-property initializers)


C# 6
// Auto-property initializers
public int Auto { get; set; } = 5;

ILSpy 역컴파일된 코드
public int Auto { get; set; }

private Program()
{
    this.<Auto>k__BackingField = 5; 
    base..ctor(); //         
}

읽기 전용 속성 값 부여 및 읽기


읽기 전용 속성에 대한 지정과 읽기에 관련된 새로운 특성은 크게 세 가지가 있습니다.
  • Getter-only auto-properties(자동 속성 초기화 유사)
  • 구조 함수에 값을 부여
  • 표현식의 속성 실현
  • Getter-only auto-properties


    C# 6
    // Getter-only auto-properties
    public int ReadOnly { get; } = 10;

    ILSpy 역컴파일된 코드
    public int ReadOnly
    {
        [CompilerGenerated]
        get
        {
            return this.<ReadOnly>k__BackingField;
        }
    }
    
    private Program()
    {
        ……
        this.<ReadOnly>k__BackingField = 10; // <ReadOnly>k__BackingField      
        base..ctor();
    }

    구조 함수에 값 부여(Ctor assignment to getter-only autoprops)


    C# 6
    Program(int i)
    {
        // Getter-only setter in constructor
        ReadOnly = i;
    }

    ILSpy 역컴파일된 코드
    private Program(int i)
    {
        ……
        this.<ReadOnly>k__BackingField = 10; // <ReadOnly>k__BackingField      
        base..ctor();
        this.<ReadOnly>k__BackingField = i;
    }

    표현식 속성 구현(Expression bodies on property-like function members)


    C# 6
    // Expression bodies on property-like function members
    public int Expression => GetInt();
    
    int GetInt()
    {
        return new Random(10).Next();
    }

    ILSpy 역컴파일된 코드
    public int Expression 
    {
        //   ,        
        get
        {
            return this.GetInt();
        }
    }

    좋은 웹페이지 즐겨찾기