4

자동 속성을 소유하는 클래스에서 이니셜 라이저를 호출 할 때 개체 이니셜 라이저를 사용하여 개인 설정 자동 속성을 설정할 수있는 이유는 무엇입니까? 나는 두 개의 클래스를 예제로 포함시켰다.개체 초기화 도구를 사용하여 전용 설정 도구 설정

public class MyClass 
{ 
    public string myName { get; private set; } 
    public string myId { get; set; } 

    public static MyClass GetSampleObject() 
    { 
     MyClass mc = new MyClass 
     { 
      myName = "Whatever", // <- works 
      myId = "1234" 
     }; 
     return mc; 
    } 


} 

public class MyOtherClass 
{ 
    public static MyClass GetSampleObject() 
    { 
     MyClass mc = new MyClass 
     { 
      myName = "Whatever", // <- fails 
      myId = "1234" 
     }; 
     return mc; 
    } 
} 
+0

같은 클래스 범위에 있기 때문에 – Reniuz

+2

왜 * 가능하지 않을까요? –

+0

@JonSkeet - 영업 사원이 '사적인'이란 부동산 범위 내에 있음을 의미할까요? – Oded

답변

3

private 설정자의 한정자는 - 둘러싸는 유형에 비공개입니다.

즉, 속성은 포함 유형으로 만 설정할 수 있습니다.

이 경우가 아니면 속성을 설정할 수없고 효과적으로 읽기 전용이됩니다. MSDN에서

- private (C# Reference) :

전용 멤버는 클래스의 신체 또는 재산을 소유 한 클래스에서 접근

+0

개인 기동자가 어떻게 작동하는지 오해했습니다. 이니셜 라이저가 자동 사유 재산을 소유하는 클래스와 같은 범위에 있지 않았을 것이므로 외부 클래스 인 것처럼 속성에 액세스 할 것이라고 생각했습니다. 다들 감사 해요. – Youngs

0

때문에 개인 수단을 선언 된 구조체 내에서 액세스 할 수 있습니다 .

+0

'클래스를 소유하고있는 클래스 내에서 '와 그 클래스 내에 중첩 된 클래스가 있으므로 @Oded는'둘러싸는 타입에 대한 private'을 설명합니다. –

관련 문제