Q
接口上的c#屬性
32
A
回答
11
性質的界面是細
參見:
http://msdn.microsoft.com/en-us/library/ms173156.aspx
接口包括方法,屬性,事件,索引,或者任何 這四個構件類型的組合。一個接口不能包含常量,字段,運算符,實例構造函數,析構函數或 類型。它不能包含靜態成員。接口成員 自動公開,並且它們不能包含任何訪問修飾符。
+20
僅僅因爲這可能並不意味着這是OP要求的最佳實踐。 – 2013-06-23 19:40:25
12
6
將屬性包含在接口或抽象類中是完全有效的。
25
屬性是方法的語法糖。試想一下:
我有一個屬性:
String PropertyA { get; set; }
在運行時,這將成爲像這樣:
String get_PropertyA() { ... }
void set_PropertyA(String value) { ... }
注意, 「...」 表示代碼,將由代碼生成器放在那裏。實際上,我所說的是,除了C#之外,屬性並不存在,因爲它們會使用我的示例中所示的對齊方式編譯爲方法。爲了確認我在說什麼,你可以使用反射並查看反射代碼的外觀。
但是,如果在執行過程中執行一些不重要的操作,那麼將屬性放在接口上可能是個不好的做法。例如,如果我想設置一個變量並更新其他變量,或者設置屬性可能由於內部條件而拒絕我的屬性分配,則不應使用屬性。我認爲這是一個適用於界面以外的通用規則。
1
我不相信這是最好的做法。
接口允許屬性(實際上是方法)。除此之外,任何事情都只是一種意見。這包括我關於更多意見的觀點。
相關問題
- 1. c#在屬性上實現接口
- 2. 接口上的屬性
- 3. 接口上的屬性
- 4. C#接口屬性實現
- 5. 的接口屬性
- 6. c#中的接口屬性副本#
- 7. 接口中的屬性屬性
- 8. C#PropertyGrid中和接口屬性
- 9. 屬性和接口
- 10. DBus接口屬性
- 11. 接口成員上的C#條件屬性
- 12. C# - 接口設置屬性{獲取,設置}另一個接口
- 13. C#接口強制屬性是另一個接口?
- 14. 在接口中實現接口屬性?
- 15. 接口擴展接口屬性
- 16. Typscript實現接口屬性
- 17. 接口,屬性和反射
- 18. 接口特定屬性
- 19. groovy接口方法屬性
- 20. 接口和屬性顯示
- 21. PHP接口有屬性嗎?
- 22. 可以派生的C#接口屬性覆蓋具有相同名稱的基礎接口屬性嗎?
- 23. C#「+」號窗口屬性
- 24. C#相同的屬性有不同類型的不同接口上
- 25. 將實現的接口指定爲C#中的一個屬性
- 26. C#:獲取從接口實現的類的屬性
- 27. 使用一個通用的C#接口的類屬性
- 28. 使用C#中繼承相同屬性的接口的方法
- 29. 使用來自接口的繼承屬性的屬性
- 30. C#反射獲取具體類的靜態屬性從接口
[Interface vs Abstract Class(general OO)](http://stackoverflow.com/questions/761194/interface-vs-abstract-class-general-oo) – MPelletier 2011-12-15 01:21:10
這可能是一個重複嗎?正如凱爾在下面指出的那樣,接口和抽象類可以有屬性,所以沒有「對比」這裏。 – bryanmac 2011-12-15 01:23:37