一、變數
c#共有其中變數型別有:靜態變數、實類變數、陣列元素、數值引數、引用引數、輸出引數和區域性變數
先定義乙個簡單的類來說明,如下:
public對於靜態變數在被建立載入之後失效,當被解除安裝後失效,靜態變數的初始值也為此型別的變數的預設值class
variabledefine
string
variablestr;
public variabledefine(string
version)
public
static
void
fun()
//////
變數型別
/// ///
intarray[0]陣列元素
///數值引數
///引用型別
///輸出引數
public
void fun(int intarray, int a, ref
int b, out
intc)
}
對於例項變數當建立某類的乙個例項的時候,隸屬於該類的例項變數也被生成,當不再有關於這個例項的引用而且例項的析構函式執行了以後,此例項變數失效
對於陣列元素當任意乙個陣列例項被建立時,這個陣列的元素也被同時建立,當不再有任何正對這個陣列例項的引用時,它的元素也就此失效
當乙個不帶有ref 或out 修飾引數被宣告時,我們稱它為數值引數
引數當乙個帶有ref 修飾語的引數被宣告時,我們稱之為引用引數
引數當乙個帶有out 修飾語的引數被宣告時,我們稱之為輸出引數
區域性變數被區域性變數宣告語句建立
c#編譯器不容許在表示式中使用未初始化的變數
變數初始化要注意兩點的是:(1)變數是類或結構中的字段,如果沒有顯示初始化,建立這些變數時,其預設值就是0(2)方法的區域性變數必須在**中顯示初始化,之後才能在語句中使用它們的值。
二、常量
c#可以定義兩種型別的常量,靜態常量用const來定義在程式編譯的時候確定,一種是動態常量用readonly來定義在執行時確定
靜態常量使用方便,效能高,但一旦定義之後就不可以改變,在乙個引用第三方程式集上面如果定義了乙個靜態常量,當它定義的值改變時你不得不重新引用生成主程式
動態常量使用靈活,能很好的支援程式的擴充套件性
下面乙個事例就是通過讀取xml文件來給動態常量賦值
public根據傳入的路徑來解析xml檔案賦值給動態常量,能很好的擴充套件應用程式的常量值sealed
class
readonlymodel
//////
解析xml文件
/// ///
///private listgetlistcompany(ienumerableelements)
;listcompany.add(companymodel);
}return
listcompany;}}
三、列舉
列舉是使用者定義的整數型別,在宣告乙個列舉時,要指定該列舉的例項可以包含的一組可以接受的值,列舉具有如下的優勢:
1.列舉可以使**更易於維護,有助於確定給變數指定合法的,期望的值
2.列舉使**更清晰,允許用描述性的名稱來表示整數,而不是含義模糊、變化多端的數
3.列舉也是**更易於輸入
在實際應用中通常在列舉上面加上description需要顯示的列舉特性值,在頁面顯示的時候通常顯示的也是列舉的特性值,所以有必要寫乙個獲取列舉特性值的通用方法
class參考部落格:列舉知多少program
company email is ", company.companyname, company.companyemail);
//}"company name is company email is ", constclass.companyname, constclass.companyemail);
memberlevel supermember =memberlevel.supermember;
console.writeline(supermember.getdescriptionenum());
console.readkey();}}
public
enum
memberlevel
public
static
class
enumextension
if (attr != null && !string
.isnullorempty(attr.description))
return
attr.description;
else
return
string
.empty;}}
四、c#的預處理指令
使用預處理指令可以禁止編譯器編譯與額外功能相關的**,以控制不同版本擁有的功能,如企業版和基本版本
#define(給定名稱的符號)和#undef(刪除名稱的符號)一般與#if、#elif、#else、#endif結合起來使用如
沒有找到預定義的debug就不會執行 #if和#endif**塊裡面的語句,這也稱為條件編譯。
同樣的預處理器指令有:#warning和#error,當編譯器遇到它們時,會分別產生警告或錯誤,如果編譯器遇到#warning指令,會給使用者顯示#warning後面的文字,之後編譯繼續,如果編譯器遇到#error指令,就會給使用者顯示後面的文字,作為一條編譯錯誤訊息,然後立即退出編譯。
#region和#endregion指令用於把一段**標記為有給定名稱的乙個塊,#line指令用於改變編譯器在警告和錯誤資訊中顯示的檔名和行號資訊,#pragm可以印製或還原指定的編譯警告參考:
C 預處理器指令
c 預處理器指令是在編譯時呼叫的。預處理器指令 preprocessor directive 告訴c 編譯器要編譯哪些 並指出如何處理特定的錯誤和警告。c 預處理器指令還可以告訴c 編輯器有關 組織的資訊。1.定義符號和取消符號定義的預處理指令 define 和 undef 預處理指令都以 號開頭並...
C 預處理器指令
預處理器指令從來不會轉化為可執行 中的命令,但會影響編譯過程中的各個方面。實際應用如 計畫發布二個版本的 即基本版本和擁有更多功能的企業版本,就可以使用這些預處理器指令 另外在編寫提供除錯資訊的 時,也可以使用預處理器指令。下面介紹幾個常用到的預處理器指令 define 和 undef 用法如 de...
C 預處理器指令入門
一 c 預處理器指令入門 definenet11 net11,net20,必須放在檔案第一行 using system string sbeeptype s.replace skey,ifnet20 int.tryparse sbeeptype,out beeptype 在.net 2.0中才有的方...