国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

C++程序員快速學習C#---(三)完

2024-07-21 02:25:05
字體:
來源:轉載
供稿:網友

八.類 
對于面向對象語言來說,類是重頭戲,c#中類的使用和c++中類似,在細節方面有些差別. 
首先來看一個c#的類的例子: 
例: 
class myclass:mybasicclass   //注意基類不需要寫限定符 
    { 
        private int a; 
        public int num() 
         { 
             return 0; 
         } 
    } 
public class mybasicclass 
    { 
    } 
這里寫出了一個類的限定符public,c#還有的限定符: 
internal:只能在當前工程中使用,當class前缺省限制符時就默認為此限制符 
public:可以在任何工程中使用 
abstract (抽象的):類不能實例化,只能繼承,可以有抽象成員 
sealed (密封的):不能繼承 
關鍵字能夠相互組合. 
首先需要知道一點,c#中只能有一個基類,它不支持多重繼承,同時不允許派生類的可訪問性比其基類更高,也就是說:內部類可以繼承于公共類,反之不行,在前文也已經說過,object類是c#中最高的類,如果一個類沒有基類,它就隱式的繼承了object類,在類中都可以使用object提供的方法. 
也許你還記得在c++中,類里面定義的方法的具體實現是在類的外部實現的,但在c#中已經不允許,c#規定所有的代碼都必須在類中,所以方法的代碼就只能和c++中的內聯函數的格式一樣,但是切記,c#中的這樣寫法并不意味著是內聯的,在c#中已經取消了內聯函數的定義,.net會在編譯的時候自動確定是否內聯. 
從上面的例子中還能發現一個不同點就算是:在類定義結束的時候沒有了分號; 
從現在開始,從細節上闡述c#的不同用法: 
1.       在c++的名詞成員變量,在c#中稱為字段,字段在c++中不能初始化,但在c#中可以直接初始化, 
2.       構造函數,它于c++使用相似,但是不允許在其中給字段初始化,c#還添加了一種靜態構造函數 
public class mybasicclass 
    { 
        static mybasicclass() 
        { 
        } 
    } 
    它不需要限定符,它的作用是在程序運行是對靜態變量進行賦值 
3.     析構函數:它和c++的概念已經完全不同了,因為c#內部有了內存自動收集機,能夠對不用的內存進行回收,所以不需要在析構函數中釋放內存了.也就無需析構函數,但是析構函數在派生于接口的類中函數有作用的,接口的概念后面會講到 
4.     虛擬函數:c#的虛擬函數同c++在語法上有區別,但是含義還是一樣的.c#中基類的虛擬函數使用關鍵字virtual 在派生類中使用override 
5.     運算符重載:c#中運算符重載和c++原理基本相同,但存在一些區別,區別在于有些運算符c#已經不允許重載了.不能重載的運算符有:-= , += , /= ,*= ,%=, 按位賦值運算符(&= ……) , 布爾運算符(&&……),賦值運算符(=).同時在c#中還有一個硬性的規定,比如重載了運算符> 就必須重載>= ,重載了== ,就必須重載 !=  反之毅然,當然不止這些還有< <= 等等 

九.異常 
c#和c++的異?;鞠嗤? 
c#的異常語句: 
try 


    catch 


    finally 


它們的不同點最主要的就是,不管是否拋出異常,最后的finally塊一定馬上執行. 

十.不安全代碼 
什么是不安全代碼,前面我已經說過,使用指針就是不安全代碼,在c#中是可以使用指針的,而且它和c++的格式一樣,但是必須放在不安全代碼段中. 
聲名不安全代碼段,使用關鍵字unsafe . 
例 
public unsafe int num() 

    return 0; 

不安全代碼可以是方法,類,結構 
十一.接口 
在c++中是沒有接口這個概念的.它是有com演變而來.一個c#接口只是函數和屬性的定義.就好比一個抽象類.它的定義和類采用相似的語法.使用關鍵字interface 
類對接口的實現是通過派生來實現的,對于接口,類可以多重繼承. 

后記. 
到這里我就準備停筆了,也許你會發現類以后的內容變的簡單了,不詳實了,的確這于我剛開始的初衷有些背離,但這也是有原因的.首先就是我在寫第三篇的時候發現在<<c#高級編程>>一書的附錄部分已經有了c++程序員過渡c#的內容,而且比較詳細,大家可以參看此書,我只是把里面大家經常會用到的語法進行了闡述,對于一些不常用到,大家可以通過專門的c#書籍進行詳細的了解.第二.在類之后的內容有許多講的都是c++不具備的內容,這些內容的講解也無法和c++進行比較來講,所以也沒有什么捷徑,只能看c#的專業書籍進行學習,比如接口,委托,甚至類中的一些用法,還有我沒有提到的屬性,事件.通過此文學習可以在對c#一竅不通的情況下快速通過已學知識對其有所了解和掌握,但是一門語言是博大精深的,所以學習c#在此基礎上還需要看一下經典的教程,對其有一個完全明了的深入理解,同時因為c#是建立在.net環境之下,所以對.net的機制也需要有一定的認識,最后我希望對c#有興趣的朋友都能完美的掌握其精華,在.net的劃時代歷程上走出輝煌的一步. 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 六盘水市| 仁寿县| 民勤县| 霸州市| 三原县| 芦溪县| 商洛市| 平谷区| 成武县| 盱眙县| 息烽县| 宕昌县| 海城市| 芜湖市| 汪清县| 右玉县| 荃湾区| 锡林郭勒盟| 图木舒克市| 桓台县| 大足县| 邵阳县| 石景山区| 大庆市| 济阳县| 鲜城| 汪清县| 屯留县| 社会| 和硕县| 襄汾县| 清涧县| 阿勒泰市| 永德县| 琼海市| 偏关县| 旅游| 剑川县| 崇信县| 景宁| 水城县|