近幾天對c#教程裡一些沒有完全掌握的知識進行了學習,學習到了自己以前不知道的用法,並進行了練習。
知識點包括列舉、異常處理、泛型和匿名委託。
1. 列舉
以前知道列舉型別,但是很少用到。
列舉是一組命名整型變數。宣告關鍵字時enum
列舉可以建立物件與整數間的對應關係;使**簡潔;可以限定值的範圍,減少編譯錯誤;易於修改;更安全
**簡潔:
classanimal
enum animal ;
限定值的範圍:
如果不知道動物有哪些下面**編譯是不會有錯誤的,而實際執行會出現錯誤
showanimal(4);
而下面這樣錯誤就可以在寫**時發現
showanimal((int)animal.bird);
易於修改:如果現在要刪除兔子,如果不適用列舉,**中呼叫兔子id的**不會出現編譯錯誤,而使用列舉,就可以在編譯時發現該錯誤
更安全:使用列舉,物件和整數的對應關係就確定了,不可修改,而使用類是可能被修改的
2. 異常處理
異常是在程式執行期間出現的問題。c# 中的異常是對程式執行時出現的特殊情況的一種響應
publicclass
}
異常可以丟擲
catch(exception e)
合理的處理異常是很重要的,異常往往是程式中要修復的地方,需要注意。
3.泛型
泛型是一種延遲編寫資料型別的規範,在實際使用的時候再確定型別。
泛型的優點在於重用**、保護型別的安全性以及提高效能。
泛型類例子:
publicclass mygenericarray
public t getitem(int
index)
public
void setitem(int
index, t value)
}
這裡使用t作為通用型別,指代資料型別,宣告了t型別的自定義陣列的建構函式(申請空間)、元素獲取方法和元素賦值方法。
使用用例:
staticvoid main(string
args)
//獲取值
for (int c = 0; c < 5; c++)
console.writeline();
//宣告乙個字元陣列
mygenericarray chararray = new mygenericarray(5
);
//設定值
for (int c = 0; c < 5; c++)
//獲取值
for (int c = 0; c < 5; c++)
console.writeline();
console.readkey();
}
這裡分明int、char作為資料型別例項化自定義陣列,首先申請空間、然後分別呼叫設定值和取值的方法。
泛型方法
除了泛型類,還可以通過型別引數宣告泛型方法,如下例:
staticvoid swap(ref t a, ref
t b)
這是乙個使用t來替代資料型別的泛型方法,實現兩個變數值交換
呼叫例子如下:
staticvoid main(string
args)
, b =
", a, b);
console.writeline(
"c = , d =
", c, d);
swap
(ref a, ref
b); swap
(ref c, ref
d); console.writeline(
"a = , b =
", a, b);
console.writeline(
"c = , d =
", c, d);
console.readline();
}
泛型委託
委託也可以泛型,例如
delegate t numberchanger(t n);
宣告兩個方法,乙個輸出顯示int型別,乙個輸出顯示string型別:
publicstatic
void intshow(int
v)
public
static
void stringshow(string
v)
建立委託例項,並呼叫
//建立委託例項
numberchanger nc1 = new numberchanger(intshow);
numberchanger
nc2 = new numberchanger(stringshow);
nc1(
25);
nc2(
"hello
");
4. 匿名方法
匿名方法提供了一種傳遞**塊作為委託碳數的技術,匿名方法是沒有名稱只有主體的方法。
匿名方法的意義在於減少寫方法的工作量,可以訪問呼叫者的變數,降低程式複雜度,減少系統開銷。
匿名方法語法
delegatevoid numberchanger(int
n);...
numberchanger nc = delegate(intx)"
, x);
};
這裡宣告了乙個委託,並用一塊**進行了例項化。
例項如下:
delegatevoid hello(string str); //
宣告乙個委託
//使用匿名方法建立委託例項
hello h = delegate(string
str)
{ console.writeline(str);;//
使用匿名方法呼叫委託
h("hello
");
C 學習筆記(1)
1.類和結構體的區別 區別在於訪問控制方面,對於結構體而言,所有成員預設都是public,即在外部可以訪問,對於類來說,預設條件下成員函式都是private,不能被外部訪問。2.c 中的建構函式 建構函式最重要的作用是建立物件本身。c 規定,每個類必須有乙個建構函式,沒有它,就不能建立任何物件。乙個...
C 學習筆記1
一,類的最基本的函式 乙個類至少有預設建構函式,拷貝建構函式,拷貝構造運算子,和析構函式四個最基本的函式,在下面的例子中將對這些函式進行講解。如下 includeusing namespace std class superone superone superone void superone se...
C 學習筆記1
c 中結構體 和 類可以通用,結構體中也可以定義函式.區別 在於訪問控制。結構體中 預設成員 都是public 類中 預設 私有的 建構函式 1。建構函式最重要的作用是建立物件本身 2.c 規定,每個類必須有乙個建構函式,沒有建構函式,就不能建立任何物件 3.如果沒有提供建構函式,則c 提供乙個預設...