爲什麼依賴屬性是靜態的,這個問題仍然在我心中很清楚,我就是爲什麼我們需要使用只讀關鍵字屬地財產申報的時間。爲什麼依賴屬性被聲明爲靜態只讀?
回答
從概念上講,依賴項屬性是依賴項對象只是具有的內容,而不依賴於何時使用該屬性。就像一個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. 爲什麼WebMethod聲明爲靜態?
- 5. 爲什麼只有靜態字段可以聲明爲'const'?
- 6. 爲什麼.NET委託不能被聲明爲靜態?
- 7. 聲明不能被標記爲「靜態」,爲什麼
- 8. 爲什麼私有靜態屬性爲
- 9. 將JAXB聲明爲依賴項。爲什麼?
- 10. createOperate方法不能被聲明爲靜態;靜態方法只能在靜態或頂級類型中聲明
- 11. 無法重新聲明非靜態PHPUnit_Framework_TestCase :: $依賴關係爲靜態SapphireTest :: $依賴關係
- 12. 非靜態依賴項屬性
- 13. 爲什麼在屬性聲明中只使用setter?
- 14. 爲什麼我的'ReplaceContent'屬性沒有被聲明?
- 15. 爲什麼GeoCoordinateWatcher的DesiredAccuracy屬性只讀?
- 16. 爲什麼Console.Console.Out&Console.Error屬性只讀?
- 17. 爲什麼property.fget是隻讀屬性?
- 18. 目標屬性必須是依賴屬性 - 爲什麼?
- 19. 爲什麼聲明的屬性同時使用保留和只讀?
- 20. 什麼是使用ARC爲ios聲明只讀屬性的正確方法
- 21. 聲明靜態變量時的輸出是什麼?爲什麼?
- 22. 爲什麼main不被聲明爲extern
- 23. 爲什麼WebFrameLoadDelegate被視爲未聲明?
- 24. WPF:如何使基類的依賴項屬性爲只讀
- 25. 爲什麼變量應聲明爲靜態和最終
- 26. 爲什麼jsp中的EL函數必須聲明爲靜態?
- 27. 爲什麼我的登錄方法聲明爲靜態?
- 28. 爲什麼不能將Java類聲明爲靜態?
- 29. 爲什麼java常量聲明爲靜態?
- 30. 爲什麼前向聲明不能修復循環依賴?
只是看看這個http://stackoverflow.com/questions/2989431/why-dependency-properties-are-static – 2011-04-11 04:09:46