C#中的類具有字段、屬性、方法等類成員。本片文章主要就是介紹這幾個類成員以及類庫的概念。
1、定義類成員
所有的成員都有自己的訪問級別:public,protected,private,internal。這幾個的區別就不說了,不知道的百度下。
需要注意的是protected和internal是可以合並使用的,表示在同個項目(更准確的說是程序集)的繼承類里可以訪問。
如果在成員的前面加上static,說明這個成員是靜態成員。
字段和變量的區別:直接在類中的數據成員為字段,他用訪問修飾符和數據類型類定義(public string name;),字段就像類的一個小數據庫,用來存放與類相關的數據;而單純的變量是沒有修飾符的(int age;),他不能直接在類里面定義,只能在函數里面定義,他用來作為方法的一個臨時變量。
定義字段
class Class
{
public int MyInt;
}
注意,類中的公共字段推薦使用PascalCasing的命名方式,而私有字段沒有推薦的,但是一般使用camelCasing。
如果使用readonly關鍵字,那么只能在構造函數的執行過程中賦值,或者在初始化賦值語句中賦值。
class Class
{
public readonly int MyInt = 2;
}
加上static關鍵字就是靜態字段了。
class Class
{
public static int MyInt;
}
引用靜態變量不需要實例化,可以直接調用,如Class.MyInt。
定義方法
采用標准的函數格式。
class MyClass
{
public string MyString()
{
return "Here is a string";
}
}
注意,類中的公共方法(如字段)使用PascalCasing的命名。
方法的聲明也可以使用static關鍵字,則為靜態方法。還可以使用一下的關鍵字,如:
定義屬性
屬性擁有兩個類似於函數的塊,一個用於獲取屬性的值,一個用戶設置屬性的值。這兩個塊也成為訪問器,分別用get和set關鍵字來獲取和設置屬性的值。也可以忽略其中的一個塊來創建只讀或者只寫屬性(忽略get則創建之只寫屬性,忽略set則創建只讀屬性)。例如:
private int myInt;
public int MyIntProp
{
get { return myInt; }
set { myInt = value; }
}
這個簡單的屬性只能訪問myInt字段,不過我們大多數情況下可能需要對操作進行更多的控制。如下面的代碼示例:
set
{
if (value >= 0 && value <= 10)
{
myInt = value;
}
}
如果賦給屬性的值在0到10之間,就修改屬性的值。如果不在應該怎么選擇呢?有四種選擇:
(1)什么都不做:就像上面的例子一樣。
(2)給字段賦予默認值;
(3)繼續執行,就行啊沒有發生錯誤一樣,但是記錄下改事件,以備將來分析。
(4)拋出異常。
一般情況下,選擇后兩種比較好。如拋出異常:
set
{
if (value >= 0 && value <= 10)
{
myInt = value;
}
else
{
throw (new ArgumentOutOfRangeException("MyIntProp", value, "MyIntProp must be assigned a value between 0 and 10."));
}
}