종속성 속성이 정적 인 이유는 분명하며 종속성 속성 선언시 Readonly 키워드를 사용해야하는 이유가 여전히 내 마음에 남아 있습니다.왜 왜 의존성 속성이 정적 읽기 전용으로 선언 되었습니까?
답변
개념적으로 종속성 속성은 종속성 개체에 단순히 있고 속성을 사용할 때 의존하지 않는 항목입니다. 이 개체에 CLR 속성과 마찬가지로 Total
속성이 있는지 묻는 경우 나중에 double
이 아니라 int
이 될 수 있습니다. 따라서 가능하다면 종속성 속성 const
을 만들지 만 할 수는 없으므로 readonly
이 차선책입니다. readonly
키워드를 사용
가 적어도 세 가지 효과 :
- 는 값이 실수로 이
- 가 지원 값을 변경 저자을 방지
- 변경되지 않습니다 코드의 독자들에게 알려 상황이 바뀌지 않을 때를 알면 도움이되는 컴파일러.
예, 이해합니다. 하지만 내가 그것을 읽기 전용으로 선언하지 않고, 런타임에이 속성을 동적으로 변경하고 싶다면 그렇게 할 수 있습니까? 아니면이 시나리오에 더 나은 해결책이 있습니까? – zinking
초기화 후이 속성의 값을 변경할 수 없으므로 분명합니다.
희망이 도움이 될 : Silverlight.net forums: DependencyProperty - public static readonly?
인용하기 :
"공용 정적 읽기 전용은"다시 등록 호출에서 제공되는 필드입니다. 필드는 속성의 식별자입니다. Silverlight 속성 시스템에서 수행 할 작업을 알 수 있도록 식별자 만 필요하므로 종속성 속성의 CLR "래퍼"를 정의 할 때 속성 시스템을 직접 사용할 수 있습니다. 래퍼가 있으면 일반 속성처럼 모든 속성을 더 사용할 수 있습니다.
공용이므로 교차 어셈블리를 포함하여 모든 속성 시스템 호출에서 액세스 할 수 있습니다.
정적이고 읽기 전용이므로 변경해야하는 정의가 아닙니다. 부동산 시스템은 일관된 결과를 얻을 필요가 있습니다.
첨부 된 속성의 경우 "owner"클래스가 있어야합니다. 소유자 클래스는 RegisterAttached를 호출하는 클래스 여야하며, DependencyObject 인스턴스에서 연결된 속성을 설정하려고 할 때 XAML 파서가 수행 할 작업을 알 수 있도록 정적 접근 메서드 (Get * 및 Set *)도 정의해야합니다. 그래서 약간의 차이가 있습니다. 왜냐하면 연결된 속성은 일반적으로 "래퍼"가 아니기 때문에 모든 코드 액세스는 Get * 및 Set * 접근자를 사용하기 때문입니다.
- 1. 왜 networkstream.write가 차단 되었습니까?
- 2. 왜 포인터가 변경 되었습니까?
- 3. 왜 Request.QueryString은 읽기 전용입니까?
- 4. 왜 BackgroundWorker가 시작 되었습니까?
- 5. 왜 이미지가 압축 되었습니까?
- 6. 왜 StringBuilder가 제거 되었습니까?
- 7. 왜 매개 변수 유형이 괄호 밖에서 선언 되었습니까?
- 8. 왜 'is'가 'as'로 구현 되었습니까?
- 9. 왜 string.Empty가 읽기 전용입니까?
- 10. RichTextBox에 속성이 누락 되었습니까?
- 11. Objective-C 속성이 왜 불편합니까?
- 12. NewRecord 속성이 나에게 왜 거짓말입니까?
- 13. C++ : 왜 소멸자가 호출 되었습니까?
- 14. 왜 원래 TDataSource가 생성 되었습니까?
- 15. 왜 세션에서 데이터가 손실 되었습니까?
- 16. 왜 Method # arity가 호출 되었습니까?
- 17. 왜 pytz 오프셋이 잘못 되었습니까?
- 18. FCKEditor를 읽기 전용으로 설정하려면 어떻게해야합니까?
- 19. 읽기 전용으로 바인딩 DependencyProperty를 다른 읽기 전용으로 설정합니다. DependencyProperty
- 20. 메모리를 읽기 전용으로 노출
- 21. 폴더가 읽기 전용으로 변경됨
- 22. 정적 분석기에 누출이 있다고했는데 왜 ...?
- 23. 왜 Attributes.IsDefined()에 과부하가 누락 되었습니까?
- 24. 왜 Console.Out & Console.Error 속성은 읽기 전용입니까?
- 25. 왜 체크 아웃이나 업데이트 후 SVN이 내 파일을 읽기 전용으로 만듭니 까?
- 26. 왜 내 UITableViewCell에 textLabel 속성이 없습니까?
- 27. 왜 내 속성이 범위를 벗어 났습니까?
- 28. 왜 속성이 ankhsvn에 영향을 미치지 않습니까?
- 29. 왜 함수 밖에서 선언 된 변수가 null입니까?
- 30. 왜 정적 객체를 설정하면 메서드 호출이 중단됩니까?
이 기사를 보시길 바랍니다. http://stackoverflow.com/questions/2989431/why-dependency-properties-are-static –