成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C# const變量詳細描述

開發 后端
這里介紹C# const變量,在一個項目中,在dll局部升級時,如果改變了某個C# const變量的值,而未升級的dll如果也有這個C# const變量的話,顯而易見這時候問題將是產生。

C#語言有很多值得學習的地方,這里我們主要介紹C# const變量,包括介紹getter與setter(屬性存取器)可以像方法一樣封裝邏輯并且像變量一樣使用等方面。

static readonly與C# const變量,作用是一樣的,無論訪問修飾符是不是public,還是其它(private、 protected、internal),變量名稱一般為大寫,中間以下劃線。

  1. public static readonly int MAX_HEIGHT;  
  2. public const int MIN_HEIGHT = 10

有些程序員對大寫不敏感,上例中,MAX_HEIGHT用Max_Height代替也未嘗不可 ,甚至MaxHeight也可以。在.Net類庫中,int.MaxValue與int.MinValue便是這樣定義的。

const常量更確切的說是編譯時常量,因為它在運行時是不存在的,在編譯中所有變量引用將被實際值替掉。而 static readonly則不然,它在運行時也是存在的。從原理上講,論效率const優于static readonly。但是在一個項目中,在dll局部升級時,如果改變了某個C# const變量的值,而未升級的dll如果也有這個C# const變量的話,顯而易見這時候問題將是產生。如 果因此而升級全部dll,反而不值。所以在大型、多變應用中,建議使用static readonly代替const。其微乎其微的效率的減損對比 升級布置可能出現的問題還是可以接受的。

除了以上兩種靜態只讀和常量變量之外,其它變量命名均以下劃線開始,訪問修改符為private(不建議命名為 internal、protected,更不建議命名為public):

  1. private static int _maxHeight;  
  2. private int _minHeight; 

如果其命名不前置下劃線,易與參數變量混淆。對于下面這種定義:

  1. private int _minHeight = default(int);  
  2. public int MinHeight  
  3. {  
  4. set{  
  5. _minHeight = value;  
  6. }  
  7. get{  
  8. return _minHeight;  
  9. }  

初學者可能覺得有點畫蛇添足,不如直接命名為:

  1. public int MinHeight; 

這樣豈不簡單,干嗎還要用getter和setter封裝起來,額外的函數調用也使效率有損。有時候在開發項目時,開始時我們要畫的可能只是一條蛇,但是項目后期需求變了,改畫一條龍了。所以在項 目初期畫蛇的時候添上一對足還是很有遠見的。

getter與setter(屬性存取器)可以像方法一樣封裝邏輯并且像變量一樣使用,建議所有非靜態只讀和常量,定 義為private,然后給其添加相應屬性存取器,用于賦值與讀取。在其它方法體內(包涵類外與類內),不建議直接讀寫變量。即使 它目前可以被直接讀寫,我們也要通過調用屬性存取器也調用。這一點有點麻煩,但很重要,很高老手有時也會犯錯誤。如下所示:

  1. private int _minHeight = int.MinValue;  
  2. public int MinHeight//或者是 protected、internal,甚至是private  
  3. {  
  4. set{  
  5. _minHeight = value;  
  6. //即使這里目前沒有其它處理邏輯  
  7. }  
  8. get{  
  9. return _minHeight;  
  10. }  
  11. }  
  12.  
  13. public void Method1 (int minHeight)  
  14. {  
  15. this.MinHeight = minHeight;//在這里不要使用 this._minHeight直接讀寫  
  16. //  

即使變量的訪問是受保護的或者或者是私有的,也要使用屬性存取器。原則是:對于變量的讀取,要用屬性存取器封裝,無論其訪問修飾符如何,即使其屬性存取器內除了存取目前 沒有任何其它邏輯。

【編輯推薦】

  1. C#類和結構簡單介紹
  2. C# explicti和implicit詳解
  3. C#編寫ActiveX控件詳細介紹
  4. C# StringBuilder和String淺析
  5. C#別名指示符學習經驗
責任編輯:佚名 來源: 博客園
相關推薦

2009-08-10 16:40:03

C#索引器

2009-08-26 15:53:48

C#擴展方法

2009-09-07 15:15:43

2009-09-03 17:59:18

C#調用事件

2009-09-14 13:14:49

LINQ序列

2009-09-14 14:58:52

LINQ to XML

2009-09-14 16:33:55

LINQ To XML

2009-09-24 16:19:53

Hibernate應用

2009-09-25 14:28:40

Hibernate S

2009-08-26 17:31:59

C# const常量

2009-11-18 11:14:49

2010-02-05 16:58:18

Android服務

2009-09-08 11:09:39

LINQ數據源

2010-04-09 17:45:06

Oracle索引

2009-10-15 14:59:45

網絡布線光纖技術

2009-09-25 11:04:32

Hibernate3實

2009-10-10 10:04:50

RHEL合法使用

2011-11-02 09:29:42

存儲虛擬化虛擬化

2009-10-16 11:02:40

VB調用動態連接庫

2009-10-12 12:54:58

VB.NET聲明API
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产乱码久久久久久88av | 成人小视频在线观看 | 日韩a在线| 午夜精品一区二区三区在线观看 | 国产精品永久久久久 | 在线成人www免费观看视频 | 日日想夜夜操 | 91五月天 | 亚洲视频在线免费观看 | 国产精品一区二区无线 | 一区二区视频 | 欧美涩涩网 | 久久精品久久精品久久精品 | 国产精品美女久久久久久免费 | 国产高清免费 | 亚洲国产精品一区二区三区 | 一区二区精品 | 久国产视频 | 午夜影院在线观看 | 亚洲一区不卡在线 | 日韩精品专区在线影院重磅 | 精品久 | 日日操夜夜摸 | 成人免费视频一区二区 | 欧美日韩在线观看一区 | 日韩一区二区在线视频 | 日韩精品一区二区三区在线 | 国产精品自拍视频 | 毛片免费观看视频 | 欧美中文字幕一区二区三区亚洲 | 青青草一区| 亚洲精品在线免费 | 日本精品一区二区三区视频 | 91在线观看网址 | 亚洲免费在线观看 | 亚洲精品欧美 | h片免费看 | 操到爽| 日韩中文字幕视频在线 | 亚洲精品久久久久久国产精华液 | 玖玖色在线视频 |