C#3.0 自动属性——只能在简单属性上偷懒
生活随笔
收集整理的這篇文章主要介紹了
C#3.0 自动属性——只能在简单属性上偷懒
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C# 3.0 為了提高開發效率和改善編程體驗,提供了自動屬性的功能,具體的代碼則由編譯器完成。這樣一來聲明類中的屬性和在接口中聲明屬性簡直就無法區分出來。
?但是,在體驗中發現我們只能對string, int這樣的簡單屬性(值類型)充分使用這個新特性,而對于復雜屬性(引用類型)則沒有那么智能,編譯程序的時候是不會有任何警告的。例如下面的代碼:
?1?class?Program?{
?2????????static?void?Main(string[]?args)?{
?3????????????OrderSheet?order?=?new?OrderSheet();
?4????????????order.Name=?"skfjskfjskfj";
?5
?6????????????GlobalOrder?go?=?new?GlobalOrder();
?7????????????string??s?=?go.Doc.BaseURI;
?8????????????go.Orders.Add(new?OrderSheet());
?9????????????
10????????}
11
12????????class?GlobalOrder?{
13????????????//集合屬性不能進行隱示聲明,必須在適當的地方進行初始化
14????????????public?OrderCollection?Orders?{?get;?set;?}
15
16????????????//引用類型需要進行初始化,而不能僅僅依賴于編譯器
17????????????public?XmlDocument?Doc?{?get;?set;?}
18????????}
19
20????????class?OrderSheet?{
21???????????public?string?Name?{?get;?set;?}
22????????}
23
24????????class?OrderCollection:Collection<OrderSheet>?{
25????????????
26????????}
27
28????}
?但是,在體驗中發現我們只能對string, int這樣的簡單屬性(值類型)充分使用這個新特性,而對于復雜屬性(引用類型)則沒有那么智能,編譯程序的時候是不會有任何警告的。例如下面的代碼:
?1?class?Program?{
?2????????static?void?Main(string[]?args)?{
?3????????????OrderSheet?order?=?new?OrderSheet();
?4????????????order.Name=?"skfjskfjskfj";
?5
?6????????????GlobalOrder?go?=?new?GlobalOrder();
?7????????????string??s?=?go.Doc.BaseURI;
?8????????????go.Orders.Add(new?OrderSheet());
?9????????????
10????????}
11
12????????class?GlobalOrder?{
13????????????//集合屬性不能進行隱示聲明,必須在適當的地方進行初始化
14????????????public?OrderCollection?Orders?{?get;?set;?}
15
16????????????//引用類型需要進行初始化,而不能僅僅依賴于編譯器
17????????????public?XmlDocument?Doc?{?get;?set;?}
18????????}
19
20????????class?OrderSheet?{
21???????????public?string?Name?{?get;?set;?}
22????????}
23
24????????class?OrderCollection:Collection<OrderSheet>?{
25????????????
26????????}
27
28????}
如果覆蓋測試進行的不夠好的話,使用這種特性創建的屬性很容易犯一個經典錯誤“未將對象引用為對象的實例”。雖然現在C#3.0還沒有正式Release,但是我仍然期待著能夠將這個特性更加完善,至少在編譯的時候給出警告。
?
轉載于:https://www.cnblogs.com/DreamWinter/archive/2007/05/31/766770.html
總結
以上是生活随笔為你收集整理的C#3.0 自动属性——只能在简单属性上偷懒的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ADSL断流问题分析
- 下一篇: C#3.0语言规范new [Unifie