我眼中的C# 3.0

作者: Allen Lee  來源: 博客園  發布時間: 2008-08-14 20:09  閱讀: 3333 次  推薦: 1   原文鏈接   [收藏]  
 
摘要:每次有新技術發布時,我們總能感受到兩種截然不同的情緒:一種是恐懼和抵抗,伴隨著這種情緒的還有諸如“為什么要在C# 3.0搞到那么復雜”;另一種則是興奮和擁抱,伴隨著這種情緒的還有諸如"原來這個問題在C# 3.0里可以這么簡單!"
[1] 你是如何創建屬性的?
[2] 你是如何初始化對象的?
[3] 你是如何把運算邏輯外包出去的?
[4] 你是如何為對象擴展與之相關的功能的?
[5] 你是如何表達你想要的東西的?

緣起

  每次有新技術發布時,我們總能感受到兩種截然不同的情緒: 一種是恐懼和抵抗,伴隨著這種情緒的還有諸如"C# 2.0用的挺好的,為什么要在C# 3.0搞到那么復雜?"或者"我還在使用C# 1.0呢?"等言辭;另一種則是興奮和擁抱,伴隨著這種情緒的還有諸如"原來這個問題在C# 3.0里可以這么簡單!"等言辭。

  最近我在公司內部做一個LINQ的系列講座,在我為其中 C# 3.0新特性這一講準備演示文稿時,突然萌生了寫下這篇文章的念頭。語言的特性乃至其本身并沒有對錯之分,是否接受在很大程度上是一個感性問題,即你是否 喜歡這樣的做事方式,我并沒有打算說服任何人接受C# 3.0和LINQ,寫這篇文章也只是想和大家分享一下我自己的感受。

  有一次我觀看一個關于Expression Blend的培訓視頻,里面說了一句讓我印象非常深刻的話:

I know how it works because I know why it works.

  細細品味這句話,你會感受到它所要傳達的信息:理解為何需要這個功能可以幫助你更好地理解如何使用這個功能,而這也正是我要在這篇文章里采用的表達方式。

你是如何創建屬性的?

  如果你長期使用C#,相信你不會對屬性這個東西感到陌生。一般地,屬性是對私有字段的一個簡單包裝,就像這樣:

代碼 1

  使用屬性而不是直接公開私有字段的一個好處就是在屬性的獲 取訪問器或設置訪問器里加入額外的邏輯并不會為客戶端代碼帶來麻煩,例如你想在設置標題的時候做一些額外的檢查。但如果你只是簡單地包裝一下,像上面的代 碼那樣,就會發現你其實多寫了不少可以省略的代碼。既然Title屬性和m_Title私有字段對應,獲取訪問器就肯定是返回m_Title的值,而設置 訪問器也肯定是把值設到m_Title。再者,如果你只通過Title屬性來訪問這個數據,那么m_Title私有字段就會變得無足輕重,這樣的話,為什 么不交給編譯器代勞呢?這個時候,C# 3.0的自動屬性就可以派上用場了:

代碼 2

  編譯器會為你創建一個私有字段,并讓獲取訪問器和設置訪問器指向這個私有字段。當然,如果有需要,例如要在獲取訪問器或設置訪問器里加入額外的邏輯時,你隨時可以對獲取訪問器和設置訪問器進行展開。

1
0
 
標簽:C#
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()