其實c#的高階特性,我覺得不能叫做高階特性
我覺得吧,c#的基本語法如果是必須要掌握的話
那麼這個所謂的高階特性其實也就是所謂的
c#這門語言的特色之處,它和其他語言的區別所在的地方
不能叫做高階特性,按照我的想法,這個才應該算是真正的c#語言
之前的那些只能是程式設計基礎而已
一開始就被這個「高階特性」這四個字嚇到了,以至於我跳過這個所謂的高階特性往下看
然後鼓起勇氣看這個「高階特性」的時候,才發現,根本也不高階到**去嘛
c#語言有四個精髓之處,其實也就三個,再化簡下來,其實也就兩個
1.泛型
2.泛型集合
3.委託
4.事件
泛型 說來也簡單,其實也就是 模板
例子: 求數在陣列中的位置 (泛型版本)
static void main()
;int i = index(nums,90);
string words = ;
i = index(words , "sg");
static int index(t a ,t value )
for(int i = 0; i < a.lenght ; i++)
if (a[i].equals(value))
return i;
return -1;
可以看出,泛型其實也就是模板在c # 中的叫法而已,實現的時候只需要加乙個 就可以使用泛型了
這個比之前在c/c++版本中,方便了不少
泛型集合,所謂集合其實就是相同型別的一組泛型,其實也可以叫做容器,因為它的英文是collection
泛型集合的目的就是對一組相同型別的物件進行儲存並操作
泛型列表 —— list 可增長的動態模板陣列 ,通過泛型列表來新增物件
在泛型列表中,其實也可以叫做泛型類表,這個list 其實就是乙個類
這裡類裡,
屬性:capacity : 設定當前最大容量
count : 當前列表中元素個數
方法:public void add(t item); 新增列表元素到列表末尾
public void sort(); 排序
public int indexof(t item);插入
public bool remove(t item);刪除
方法還有過載的不同版本
下面是從cen123蒐羅來的**,我覺得他說得很好,要是想進一步了解的話,我覺得不防去看看他那篇文章
-----------------------------分割線-----------------------------------
怎樣建立泛型集合?
主要利用system.collections.generic命名空間下面的list泛型類建立集合,語法如下:
list<t> listoft = new list<t>();
其中的"t"就是所要使用的型別,既可以是簡單型別,如string、int,也可以是使用者自定義型別。下面看乙個具體例子。
定義person類如下:
class person
//姓名
public string name
}//年齡
public int age}}
//建立person物件
person p1 = new person("張三", 30);
person p2 = new person("李四", 20);
person p3 = new person("王五", 50);
//建立型別為person的物件集合
list<person> persons = new list<person>();
//將person物件放入集合
persons.add(p1);
persons.add(p2);
persons.add(p3);
//輸出第2個人的姓名
console.write(persons[1].name);
可以看到,泛型集合大大簡化了集合的實現**,通過它,可以輕鬆建立指定型別的集合。非但如此,泛型集合還提供了更加強大的功能,下面看看其中的排序及搜尋。
泛型集合的排序
排序基於比較,要排序,首先要比較。比如有兩個數1、2,要對他們排序,首先就要比較這兩個數,根據比較結果來排序。如果要比較的是物件,情況就要複雜一點,比如對person物件進行比較,則既可以按姓名進行比較,也可以按年齡進行比較,這就需要確定比較規則。乙個物件可以有多個比較規則,但只能有乙個預設規則,預設規則放在定義該物件的類中。預設比較規則在compareto方法中定義,該方法屬於icomparable<t>泛型介面。請看下面的**:
class person :icomparable<person>
}compareto方法的引數為要與之進行比較的另乙個同型別物件,返回值為int型別,如果返回值大於0,表示第乙個物件大於第二個物件,如果返回值小於0,表示第乙個物件小於第二個物件,如果返回0,則兩個物件相等。
定義好預設比較規則後,就可以通過不帶引數的sort方法對集合進行排序,如下所示:
//按照預設規則對集合進行排序
persons.sort();
//輸出所有人姓名
foreach (person p in persons)
下面來講一講委託 ,委託是乙個型別,它用來封裝方法 目的是,實現把方法作為乙個引數來傳遞
委託是從system.delegate類派生的類
//宣告委託: 和宣告方法類似,但是多乙個delegate關鍵字
如:
在class program外層定義委託
delegate void delegateone();
delegate double delegatetwo(double r,double t);
在program內部寫出與main()併排的函式
static double add(double a, double b)
static void printstar()
}static void printline()
}在main函式中使用委託
//注意:委託傳遞的是ta的名稱,而不是ta的呼叫,千萬不能加括號
//委託裡面放的是方法的位址,呼叫委託就是依次呼叫委託中方法的位址
delegateone di = new delegateone(printstar);
di();//呼叫委託,相當於 printstar
//+= 也是傳遞的名稱,而不是方法的呼叫
di += printline;
di();//呼叫委託,相當於 printstar, printline
double a = 0.2;
double b = 0.3;
double r;
delegatetwo d2 = new delegatetwo(add);
r = d2(a,b); //委託 呼叫 含有引數的方法
其實委託的作用就是,更方便的呼叫方法,或者說是依次呼叫方法,或者是,把同乙個方法呼叫多次
但是,據說委託的真正意義不僅僅是這樣,而是配合著事件來使用的。
那麼,下面就介紹什麼是事件
事件是在委託的基礎上,記住,是在委託的基礎上
事件具有不確定性發生的函式
例如: 按鈕有乙個單擊的事件,什麼時候發生這個事件軟體不知道,但是,事件發生了之後軟體就依次執行事件裡面的方法
//宣告事件的語法
public event 委託型別 事件名稱;
/** 事件
* 例: 體重改變事件
* 建立乙個woman類,有名稱,年齡,體重三個屬性
* 體重發生變化時,出發事件getfatter/getthinner
* 訂閱事件 用+=
*/delegate void weightchange(double newweight);
class woman
public int age
//public double weight
private double w;
//定義了兩個事件,分別在當人的體重變輕和變重的時候出發這個事件
public double weight
set
else if (w > value)
w = value;}}
public event weightchange getfatter;
public event weightchange getthinner;
//定義函式
static void girl_getthinner(double newweight)
",newweight);
system.console.readline();
}static void girl_getfatter(double newweight)
", newweight);
system.console.readline();
}//主函式
woman girl = new woman();
//事件處理程式
girl.getthinner += new weightchange(girl_getthinner);
girl.getfatter += new weightchange(girl_getfatter);
girl.weight = 60;
//隨機數字
random r = new random();
for (int i = 0; i < 5; i++ )
大致就是這麼多了,今天累了,就這樣吧。
第一次學,不好的地方,請指正!
C 高階特性
msad的解釋.netframework是為其執行的應用程式提供各種服務的託管執行環境 主要元件公共語言執行時 clr 和.net framework.託管 和非託管 託管 就是visual baseic net和c 編譯器編譯出來的 託管 在公共語言執行庫 clr 中執行 非託管 是執行在公共語言...
C 高階教程 特性
特性 attribute 是用於在執行時傳遞程式中各種元素 比如類 方法 結構 列舉 元件等 的行為資訊的宣告性標籤。您可以通過使用特性向程式新增宣告性資訊。乙個宣告性標籤是通過放置在它所應用的元素前面的方括號 來描述的。特性 attribute 用於新增元資料,如編譯器指令和注釋 描述 方法 類等...
c 之高階特性
一.c 委託 概念 委託是一種引用型別,表示對方法的引用,這個方法是具有特定返回值型別和引數的方法。方式一 通過委託例項呼叫方法 方式二 使用委託把方法作為引數傳遞給其它方法。委託 方式一 的使用步驟 1.宣告委託 語法 delegate 返回值型別 委託名 引數列表 delegate string...