C#基礎

c#語法特性
  • 類(class)

    • 理解類(一)

      • 包含變量(屬性)

      • 包含方法(行為)

      • 繼承

      • 用來創(chuàng)建對象

    • 理解類(二)

      • 核心是建模

      • 面向?qū)ο?/p>

        • 擅長設計

        • 以對象為基礎單位

      • 面向過程

        • 擅長實現(xiàn)

        • 以函數(shù)為基礎單位

    • 理解類(三)

      • 值類型

        • byte, short, int, float, double, decimal, char, bool, struct

        • 直接存儲其值

      • 引用類型

        • string, class

        • 引用類型存儲對其值的引用

    • 類的訪問權限(封裝性)

      • internal, private, public, protected
    • 類的命名

    • 抽象類與接口(繼承性睛廊、多態(tài)性)

      • 抽象類中有的時候需要些抽象方法匿垄,抽象方法需要再子類中覆寫,實現(xiàn)接口可以顯示實現(xiàn)和隱式實現(xiàn)
    • 內(nèi)部類

      • 有的時候需要在類內(nèi)部創(chuàng)建一些只需要在類內(nèi)部使用的對象汪茧,這時候可以用內(nèi)部類
    • partial關鍵字

    • 泛型類

      • 類需要適配不同的類型的時候廊谓,可以用泛型類舍咖,比如單例的模板许帐。
  • 結構(struct)

    • 是值類型

    • 不能設置為 null

    • 聲明變量時剿涮,本身就有值了

    • 賦值時是深拷貝

    • 不能局部賦值(比如 transofrm.position.x 不能直接賦值),作為一個屬性時腻异, struct 無法對單一的成員變量賦值进副,而 class 則是只要允許可以隨便賦值。

    • 在結構聲明中悔常,除非將字段聲明為 const 或 static影斑,否則無法初始化。

    • 結構不能聲明無參數(shù)構造函數(shù)(沒有參數(shù)的構造函數(shù))或終結器这嚣。

    • 結構在分配時進行復制鸥昏。將結構分配給新變量時,將復制所有數(shù)據(jù)姐帚,并且對新副本所做的任何修改不會更改原始副本的數(shù)據(jù)吏垮。在處理值類型的集合(如Dictionary<string, myStruct>)時,請務必記住這一點罐旗。

    • 結構是值類型膳汪,不同于類,類是引用類型九秀。

    • 與類不同遗嗽,無需使用new運算符即可對結構進行實例化。

    • 結構可以聲明具有參數(shù)的構造函數(shù)鼓蜒。

    • 一個結構無法繼承自另一個結構或類痹换,并且它不能為類的基類。所有結構都直接繼承自ValueType都弹,后者繼承自Object娇豫。

    • 結構可以實現(xiàn)接口。

    • 結構不能為null畅厢,并且不能向結構變量分配null冯痢,除非將變量聲明為可為空的值類型。

  • 接口(interface)

    • 基本描述

      • 接口類似只有抽象成員的抽象基類框杜。實現(xiàn)接口的任何類火結構都必須實現(xiàn)其所有成員

      • 接口無法直接進行實例化浦楣。其成員由實現(xiàn)接口的任何類或結構來實現(xiàn)。

      • 接口可以包含事件咪辱、索引器振劳、方法和屬性。

      • 接口不包含方法的實現(xiàn)油狂。

      • 一個類或接口可以實現(xiàn)多個接口澎迎。一個類可以繼承一個基類庐杨,還可實現(xiàn)一個或多個接口

    • 應用場景

      • 官方的推薦場景是解決接口方法重名的問題

      • 另一個應用場景是為了減少接口方法的訪問權限

  • 事件(event)

  • 屬性(property)

  • 委托(delegate)

    • 常用委托

      • Action<T>

      • Func<T>

    • 注意事項

      • 注冊委托和注銷委托最好成對出現(xiàn)

      • 委托有可能為null,所以最好在生命委托變量時夹供,設置一個初始值,可以減少空指針異常的風險

        • <pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="c#" cid="n155" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 0px; width: inherit;">public Action<int> OnAgeChanged = (age)=>{}</pre>
  • 表達式

    • 數(shù)值和字符串

      • <pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="c#" cid="n180" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 0px; width: inherit;">int i = 5;
        string text = "hello world";
        ?
        Debug.Log(i);
        Debug.Log(text);</pre>

      • 在表達式中使用i和text這些變量的時候仁堪,變量名稱計算為當前在改變量的內(nèi)存位置所儲存的值

    • 調(diào)用表達式

      • <pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="c#" cid="n187" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 0px; width: inherit;">void DoWork(){}
        DoWork();
        ?
        Action SomeAction = ()=>{}
        SomeAction();</pre>
    • 查詢表達式

    • Lambda表達式

      • <pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="c#" cid="n220" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 0px; width: inherit;">(paramA)=>{return someValue;}
        () => {}
        (paramA)=>someValue</pre>
  • 語句

  • 特性(有時候也叫屬性哮洽,Attribute)

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市弦聂,隨后出現(xiàn)的幾起案子鸟辅,更是在濱河造成了極大的恐慌,老刑警劉巖莺葫,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匪凉,死亡現(xiàn)場離奇詭異,居然都是意外死亡捺檬,警方通過查閱死者的電腦和手機再层,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來堡纬,“玉大人聂受,你說我怎么就攤上這事】靖洌” “怎么了蛋济?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長炮叶。 經(jīng)常有香客問我碗旅,道長,這世上最難降的妖魔是什么镜悉? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任祟辟,我火速辦了婚禮,結果婚禮上积瞒,老公的妹妹穿的比我還像新娘川尖。我一直安慰自己,他們只是感情好茫孔,可當我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布叮喳。 她就那樣靜靜地躺著,像睡著了一般缰贝。 火紅的嫁衣襯著肌膚如雪馍悟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天剩晴,我揣著相機與錄音锣咒,去河邊找鬼侵状。 笑死,一個胖子當著我的面吹牛毅整,可吹牛的內(nèi)容都是我干的趣兄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼悼嫉,長吁一口氣:“原來是場噩夢啊……” “哼艇潭!你這毒婦竟也來了?” 一聲冷哼從身側響起戏蔑,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蹋凝,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后总棵,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鳍寂,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年情龄,在試婚紗的時候發(fā)現(xiàn)自己被綠了迄汛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡刃唤,死狀恐怖隔心,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情尚胞,我是刑警寧澤硬霍,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站笼裳,受9級特大地震影響唯卖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜躬柬,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一拜轨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧允青,春花似錦橄碾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至琼掠,卻和暖如春拒垃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瓷蛙。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工悼瓮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留戈毒,地道東北人。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓横堡,卻偏偏與公主長得像埋市,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子翅萤,可洞房花燭夜當晚...
    茶點故事閱讀 44,955評論 2 355