C#標識符問題

來源:互聯網
上載者:User
C#中的標識符分這麼幾種:C#關鍵字、類型名、變數名、方法名。思考回憶下【標識符命名的規則】其中有這麼幾條值得注意:   其一,C#關鍵字統統為小寫,什麼是關鍵字?它是編譯器內建識別的標識符,是最為底層的標識符,所以類型名、變數名、方法名都不能和它重名,這在任何語言中都是一樣的;C#關鍵字有哪些?這個看似簡單的問題,其實還真不容易說的清楚,最好分類總結,C#的關鍵字已不是C語言中32個關鍵字那麼簡單,我就簡單分下類,不做統計:       有關類型定義的關鍵字:{class,struct,enum,interface,delegate}這是標準的CTS類型系統       有關類型的關鍵字:{int,string,bool,object,……..}這一集合都映射C#中的實際結構類型。 有關語句的關鍵字:{if,else,while,do,for,switch,case,return,using,foreach,…..}呵呵看看有沒有漏得得。        有關運算子的關鍵字:{new,as,is,sizeof,typeof,…..}        有關異常的關鍵字{try,catch,finaly,…}      有關類型和變數及方法修飾符的關鍵字:{public,private,internal,static,abstract,new,virtual,override,….}     有關參數的:{ref,out,..}     其它{var,where,event,in,null,this,base,get,set,value(不算)}     ………………….其二,類型名規則。類型名在同域下不能重名。C#的類型系統更為複雜。本質上講,類型是有程式集界定的,命名空間邏輯組織限定的。有以下總結: 第一,要求就是類型的完全限定不允許重名,這是最根本的;第二,要求自身類型定義中不允許出現與類型同名的變數名。這個要求(規定)就較為尷尬了,也就是說除此之外,所有其它的情況下都可以定義和類型同名的變數。這樣下來,所謂的類型和變數,類型名和變數名就較為不好理解了,竟然可以同名?!!! 其三,C#的變數名。變數名最大域作用也就是限定在類的定義中(這反映出CIL是完全基於棧的語言),這些是類的資料成員;函數參數可以定義,函數內部可以定義,塊文法也可以定義,這些統稱局部變數。局部變數可以覆蓋類的資料變數,但局部變數不能彼此覆蓋(這一點和C/C++是完全不同),C#的做法消除了由於局部變數覆蓋父級同名變數可能意外情況! 其四,C#函數名實質上應該看成一個字面量(字面值)。在同域條件下,函數簽名不應相同,就是所謂的函數重載。 總之,無論如何,C#標識符的規則就是不應使編譯器對標識符在可能的情況下產生二義性。在同域條件下,類型名(只能在命名空間或嵌套類中)、函數簽名(類內)不應該重名;局部變數可以覆蓋類的資料變數,但局部變數之間不能覆蓋;允許類型名和變數名重名,不允許封閉類型和定義的成員重名,在類內不允許類的成員各個之間重名,但在函數參數和函數內允許函數名和變數名個重名  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.