爲什麼依賴屬性是靜態的,這個問題仍然在我心中很清楚,我就是爲什麼我們需要使用只讀關鍵字屬地財產申報的時間。爲什麼依賴屬性被聲明爲靜態只讀?
回答
從概念上講,依賴項屬性是依賴項對象只是具有的內容,而不依賴於何時使用該屬性。就像一個CLR屬性,如果你問這是否對象有Total
屬性,你就知道它不能是現在double
而是int
以後。因此,如果可以的話,我們將依賴項屬性const
,但我們不能,所以readonly
是次好的。
使用readonly
關鍵字至少有三個作用:
- 它通知碼的讀者,價值不會改變
- 它可以防止筆者意外更改
- 它協助價值編譯器,它知道什麼時候事情不會改變
是的,理解。但是如果我聲明它不是隻讀的,並且出於某種原因我想在運行時動態地更改此屬性,那麼可能嗎?或者對於這種情況有更好的解決方案? – zinking 2013-06-21 10:27:18
因爲它使明顯,這個屬性的值初始化後不能更改。
希望這將有助於:Silverlight.net forums: DependencyProperty - public static readonly?
引述:
「公共靜態只讀」是來自注冊回調領域。該字段是屬性的標識符。你只需要標識符,這樣Silverlight屬性系統就知道該怎麼做,並且可以在定義依賴屬性的CLR「包裝器」時自己使用屬性系統。一旦你有了包裝,該物業的所有進一步使用可以像典型的財產一樣使用它。
公共使所有財產的系統調用,包括跨組件能夠訪問它。
靜態和只讀的,因爲這不是應該永遠改變的定義;房產系統需要獲得一致的結果。
在附加屬性的情況下,你想有是一個「老闆」級。所有者類必須是調用RegisterAttached的類,並且還必須定義靜態訪問器方法(Get *和Set *),以便當您嘗試在DependencyObject實例上設置附加屬性時,XAML分析器知道該做什麼。所以它有點不同,因爲對於附加屬性,通常不是「包裝」,任何代碼訪問都只使用Get *和Set *訪問器。
- 1. 爲什麼依賴屬性?
- 2. 爲什麼依賴屬性是「靜態的」?
- 3. 聲明不能被標記爲「靜態」,爲什麼
- 4. 爲什麼私有靜態屬性爲
- 5. createOperate方法不能被聲明爲靜態;靜態方法只能在靜態或頂級類型中聲明
- 6. 非靜態依賴項屬性
- 7. 爲什麼在屬性聲明中只使用setter?
- 8. 爲什麼Console.Console.Out&Console.Error屬性只讀?
- 9. 爲什麼property.fget是隻讀屬性?
- 10. 目標屬性必須是依賴屬性 - 爲什麼?
- 11. 爲什麼argv []被聲明爲const?
- 12. 爲什麼main不被聲明爲extern
- 13. 爲什麼WebFrameLoadDelegate被視爲未聲明?
- 14. 聲明靜態變量時的輸出是什麼?爲什麼?
- 15. WPF:如何使基類的依賴項屬性爲只讀
- 16. 爲什麼不能將Java類聲明爲靜態?
- 17. 爲什麼我的登錄方法聲明爲靜態?
- 18. 爲什麼jsp中的EL函數必須聲明爲靜態?
- 19. 爲什麼前向聲明不能修復循環依賴?
- 20. 何時聲明靜態屬性?
- 21. 聲明一個控件屬性爲靜態資源
- 22. 爲什麼我對gwt有依賴性?
- 23. 行家遮陽簾插件不包括被聲明爲依賴
- 24. 聲明靜態屬性,同時包括另一個靜態屬性
- 25. 爲什麼不能在非靜態塊中聲明靜態最終變量?
- 26. 爲什麼聲明Mapper和Reducer類是靜態的?
- 27. 爲什麼不能在類中聲明const靜態字符串
- 28. Django - 爲什麼模型類中聲明的變量靜態
- 29. 爲什麼我不能轉發聲明靜態函數?
- 30. 爲什麼我們要聲明一個靜態方法
只是看看這個http://stackoverflow.com/questions/2989431/why-dependency-properties-are-static – 2011-04-11 04:09:46