static readonly與const的變量,作用是一樣的,無論訪問修飾符是不是public,還是其它(private、protected、internal),變量名稱一般爲大寫,中間以下劃線。
public static readonly int MAX_HEIGHT;
public const int MIN_HEIGHT = 10;
有些程序員對大寫不敏感,上例中,MAX_HEIGHT用Max_Height代替也未嘗不可,甚至MaxHeight也可以。在.Net類庫中,int.MaxValue與int.MinValue便是這樣定義的。
const常量更確切的說是編譯時常量,因爲它在運行時是不存在的,在編譯中所有變量引用將被實際值替掉。而static readonly則不然,它在運行時也是存在的。從原理上講,論效率const優于static readonly。但是在一個比較在的項目中,在dll局部升級時,如果改變了某個const變量的值,而未升級的dll如果也有這個const變量的話,顯而易見這時候問題將是産生。如果因此而升級全部dll,反而不值。所以在大型、多變應用中,建議使用static readonly代替const。其微乎其微的效率的減損對比升級布置可能出現的問題還是可以接受的。
除了以上兩種靜態只讀和常量變量之外,其它變量命名均以下劃線開始,訪問修改符爲private(不建議命名爲internal、protected,更不建議命名爲public):
private static int _maxHeight;
private int _minHeight; 如果其命名不前置下劃線,易與參數變量混淆。
對于下面這種定義:
private int _minHeight = default(int);
public int MinHeight
{
set{
_minHeight = value;
}
get{
return _minHeight;
}
}
初學者可能覺得有點畫蛇添足,不如直接命名爲:
public int MinHeight; 這樣豈不簡單,幹嗎還要用getter和setter封裝起來,額外的函數調用也使效率有損。
有時候在開發項目時,開始時我們要畫的可能只是一條蛇,但是項目後期需求變了,改畫一條龍了。所以在項目初期畫蛇的時候添上一對足還是很有遠見的。
getter與setter(屬性存取器)可以像方法一樣封裝邏輯並且像變量一樣使用,建議所有非靜態只讀和常量,定義爲private,然後給其添加相應屬性存取器,用于賦值與讀取。在其它方法體內(包涵類外與類內),不建議直接讀寫變量。即使它目前可以被直接讀寫,我們也要通過調用屬性存取器也調用。這一點有點麻煩,但很重要,很高老手有時也會犯錯誤。如下所示:
private int _minHeight = int.MinValue;
public int MinHeight//或者是protected、internal,甚至是private
{
set{
_minHeight = value;
//即使這裏目前沒有其它處理邏輯
}
get{
return _minHeight;
}
}
public void Method1(int minHeight)
{
this.MinHeight = minHeight;//在這裏不要使用this._minHeight直接讀寫
//
}
即使變量的訪問是受保護的或者或者是私有的,也要使用屬性存取器。
原則是:對于變量的讀取,要用屬性存取器封裝,無論其訪問修飾符如何,即使其屬性存取器內除了存取目前沒有任何其它邏輯。
.Net開發漫談:關于命名空間和目錄劃分從命名空間的命名、目錄的劃分與命名可以看出一個程序員是否有經驗,是否很有經驗。一個編程老手絕不允許架構混亂。 .Net開發中,一般目錄名與命名空間名稱是對應的。關于命名空間如何劃分,目錄如何分類,這個問題看...查看完整版>>
.Net開發漫談:關于命名空間和目錄劃分
.Net開發漫談:關于命名空間和目錄劃分從命名空間的命名,目錄的劃分與命名可以看出一個程序員是否有經驗,是否很有經驗。一個編程老手絕不允許架構混亂。 .Net開發中,一般目錄名與命名空間名稱是對應的。關于命名空間如何劃分,目錄如何分類,這個問題看...查看完整版>>
.Net開發漫談:關于命名空間和目錄劃分
ASP.NET 2.0完全開發指南--基于C#|報價¥59.00|圖書,計算機與互聯網,程序設計,.NET環境,ASP.NET,王佑禮目錄:圖書,計算機與互聯網,程序設計,.NET環境,ASP.NET,品牌:王佑禮基本信息·出版社:北京科海電子出版社·頁碼:733 頁碼·出版日:2008年·ISBN:9787030207166·條碼:9787030207166·版次:1版·裝幀:平裝·開...查看完整版>>
ASP.NET 2.0完全開發指南--基于C#|報價¥59.00|圖書,計算機與互聯網,程序設計,.NET環境,ASP.NET,王佑禮
ASP.NET 2.0完全開發指南--基于C#|報價¥59.00|圖書,計算機與互聯網,程序設計,.NET環境,ASP.NET,王佑禮目錄:圖書,計算機與互聯網,程序設計,.NET環境,ASP.NET,品牌:王佑禮基本信息·出版社:北京科海電子出版社·頁碼:733 頁碼·出版日:2008年·ISBN:9787030207166·條碼:9787030207166·版次:1版·裝幀:平裝·開...查看完整版>>
ASP.NET 2.0完全開發指南--基于C#|報價¥59.00|圖書,計算機與互聯網,程序設計,.NET環境,ASP.NET,王佑禮
ASP.NET 2.0服務器控件開發之複雜屬性 在中,曾經提及“複雜屬性”的概念。複雜屬性的最大特征是屬性的類型是本身具有屬性(稱爲子屬性)的類。通常情況下,複雜屬性表現爲3種形式:連字符形式屬性、內部嵌套形式屬性和內部嵌套形式默認屬性。本文將介...查看完整版>>
ASP.NET 2.0服務器控件開發之複雜屬性
終于體會到了,在.net開發不用C#那純粹是自找麻煩阿我是個Delphi fans,自從試了一下Delphi8,第二天就刪掉了,bug太多,沒法用,只好不太情願地使用著C#,Delphi2005出來了,就又裝了一個試用版用了一下,感覺不錯,有點欣喜若狂,就准備使用起來,但是隨著程序規模的...查看完整版>>
終于體會到了,在.net開發不用C#那純粹是自找麻煩阿
(原創)利用vs.net快速開發windows服務(c#)在很多應用中需要做windows服務來操作數據庫等操作,比如(1)一些非常慢的數據庫操作,不想一次性去做,想慢慢的通過服務定時去做,比如定時爲數據庫備份等(2)在.net Remoting中利用windows服務來做Host利用vs.ne...查看完整版>>
(原創)利用vs.net快速開發windows服務(c#)
[原創]屏蔽.NET自定義開發組件中的屬性 今天看見一個網友的留言:有一個問題請教一下兄台,對于繼承自microsoft的.net framework中現有的組件,怎麽將一些屬性屏蔽掉,就是新的組件不提供繼承來的屬性,比如繼承Panel新編寫EPanel,對于panel的屬性的BackC...查看完整版>>
[原創]屏蔽.NET自定義開發組件中的屬性
一個簡單的用ASP.NET/C#開發的組件化Web應用程序(附源代碼)==============================================================================1)創建一個類來處理用戶登錄,將該類編譯成一個裝配件(assembly),並發布到站點的bin目錄下。================================...查看完整版>>
一個簡單的用ASP.NET/C#開發的組件化Web應用程序(附源代碼)