別弄混了C#.的幾個小概念


在寫博文介紹WCF的Contract的時候,突然發現有幾個C#的小概念需要提一下。否則容易讓別人聽迷糊的。所以,就單獨列出來了這篇。

第一組:Attribute,property,field

這一組概念好多人會覺得是一個意思。其實,在C#中,他們指代完全不同的內容。

 1     [Serializable]
 2     class Person
 3     {
 4         private string name;     
 5 
 6         public string Name
 7         {
 8             get
 9             {
10                 return this.name;
11             }
12             set
13             {
14                 if (!string.IsNullOrEmpty(value))
15                 {
16                     this.name = value;
17                 }
18             }
19 
20         }
21         
22         public int Age { get; set; }
23        
24     }

注:第一行:[] 中括號內的叫做Attribute.這個怎么翻譯呢?有人翻譯為“特性”。我覺得還是不翻譯的好,還叫它Attribute吧,呵呵。Attribute是用來修飾Class、Interface、method的,放在class、interface、method定義的上一行。Serializable是系統內已經定義好的"Attribute類",用語修飾其他class、interface、method。[Serializable]修飾一個Class表明該class(類) new出來的的object(對象)可以被序列化成XML。XML可以被反序列化成object(對象)。可以定義自己的"Attribute類"去修飾其他class/interface。這里不多講,只要知道Attribute是位於class上面一行的中括號內的就行了。
第四行:private string name;這里name叫做field。有人翻譯為“字段”。個人認為不恰當,還是保留叫做field吧,呵呵。其實就是C++中所謂的私有變量了。field因為是private,所以不可在class外被訪問。

第六行至第20行:叫做property。有人翻譯為“屬性”。個人還是認為還是保留Property。property 提供了外界訪問field的一個簡易方法。這里可以做簡單的條件過濾等。如果property體內只有Get{},而沒有Set{},則該property/field就是只讀了。

第22行:一般情況下我們會為filed定義一個property以利於外界的訪問。 C#也允許我們之定義property,而不必寫field,如Age。在編譯時,CLR會自動替我們生成field的。

第二組:Function & Method(Operation)

一般function都被翻譯成"函數",method都被翻譯成"方法"吧?

我覺主要是從他們所表達的側重不同進行區分他們. 腳本語言如C,Perl,PHP,Python,powershell,unix bash等,好像用function比較多.而在C#,Java等語言中method用得比較多.個人感覺

function是不需要依賴於class(類)或object(對象)的,相對於腳本中的普通語句(未被提取成function的語句)而言的;

method依賴於某個class /object,相對class中的property而言的.

operation我覺得和method是一個概念,都是在某了對象上面做的操作.

=====================================================================================

先寫這些吧,以后遇到概念再需要單獨拿出來澄清的時候,在追加。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM