C#基礎(chǔ)之002-基礎(chǔ)概念001

C#關(guān)鍵概念

C# 組織結(jié)構(gòu)的關(guān)鍵概念是程序 (program)棒旗、命名空間 (namespace)捆交、類(lèi)型 (type)兵多、成員 (member) 和程序集 (assembly)。

C# 程序由一個(gè)或多個(gè)源文件組成婉宰。

類(lèi)和接口就是類(lèi)型的示例势似。

字段 (field)拌夏、方法、屬性和事件是成員的示例履因。

程序集擴(kuò)展名.exe(應(yīng)用程序)或.dll(類(lèi)庫(kù))

CLR障簿、CTS、CLS

CLR:公共語(yǔ)言運(yùn)行時(shí)

CTS:通用類(lèi)型庫(kù)

CLS:公共語(yǔ)言規(guī)范

CLR與IL分別是什么含義栅迄?

CLR:公共語(yǔ)言運(yùn)行時(shí)站故,類(lèi)似于Java中的JVM,Java虛擬機(jī)霞篡;在.Net環(huán)境下世蔗,各種編程語(yǔ)言使用一種共同的基礎(chǔ)資源環(huán)境。CLR就是具體的編程語(yǔ)言如:C#.NET與操作系統(tǒng)之間的翻譯朗兵,同時(shí)為具體的編程語(yǔ)言提供資源:

IL污淋,中間語(yǔ)言,也稱(chēng)MSIL余掖,微軟中間語(yǔ)言寸爆,或CIL,通用中間語(yǔ)言;所有.NET源代碼(不管用哪種語(yǔ)言編寫(xiě))在進(jìn)行編譯時(shí)都被編譯成IL赁豆。在應(yīng)用程序運(yùn)行時(shí)被即時(shí)(Just-In-Time仅醇,JIT)編譯器處理成為機(jī)器碼,被解釋及執(zhí)行魔种。

什么是托管代碼和非托管代碼析二?

托管代碼就是Visual Basic .NET和C#編譯器編譯的代碼。編譯器把代碼編譯成中間語(yǔ)言(IL)节预,而不是能直接在你的電腦上運(yùn)行的機(jī)器碼叶摄。比如用C# /http://VB.NET寫(xiě)的任何代碼都是托管代碼

非托管代碼直接編譯成目標(biāo)計(jì)算機(jī)的機(jī)械碼,只能運(yùn)行在編譯出它們的計(jì)算機(jī)上安拟,或者是其它相同處理器或者幾乎一樣處理器的計(jì)算機(jī)上蛤吓。Visual C++可以創(chuàng)建非托管程序。比如COM組件, ActiveX組件和Win32接口函數(shù)都是非托管代碼糠赦。

托管代碼與非托管代碼的區(qū)別

1会傲、托管代碼獨(dú)立于平臺(tái)和語(yǔ)言,能更好的實(shí)現(xiàn)不同語(yǔ)言平臺(tái)之間的兼容拙泽;

???? 非托管代碼依賴(lài)于平臺(tái)和語(yǔ)言淌山。

2、托管代碼可享受CLR提供的服務(wù)(如安全檢測(cè)奔滑、垃圾回收等)艾岂,不需要自己完成這些操作顺少;

?????? 非托管代碼需要自己提供安全檢測(cè)朋其、垃圾回收等操作。

托管代碼的執(zhí)行過(guò)程

1脆炎、選擇編譯器:選擇一個(gè)或多個(gè)針對(duì)運(yùn)行庫(kù)的語(yǔ)言編譯器梅猿,如 Visual Basic、C#秒裕、Visual C++袱蚓、JScript 或許多第三方編譯器(如 Eiffel、Perl 或 COBOL 編譯器)几蜻。

2喇潘、編譯,將源代碼翻譯為microsoft中間語(yǔ)言(MSIL)并生成需要的元數(shù)據(jù)梭稚。

3颖低、執(zhí)行,實(shí)時(shí) (JIT) 編譯器將 MSIL 翻譯為本機(jī)代碼弧烤。PS:編譯過(guò)程中忱屑,代碼通過(guò)驗(yàn)證.

????? 確認(rèn) MSIL 和元數(shù)據(jù)是否可以將代碼確定為類(lèi)型安全。

4、運(yùn)行代碼:公共語(yǔ)言運(yùn)行庫(kù)提供使執(zhí)行能夠發(fā)生以及可在執(zhí)行期間使用的各種服務(wù)的結(jié)構(gòu)莺戒。

什么是基元類(lèi)型

由編譯器直接支持的數(shù)據(jù)類(lèi)型稱(chēng)為基元類(lèi)型伴嗡,例如:在C#中,int直接映射為System.Int32類(lèi)型

類(lèi)型:sbyte / byte / short / ushort /int / uint / long / ulong ? ? ? char / float / double / bool

類(lèi)型

類(lèi)型有兩種:值類(lèi)型 (value type) 和引用類(lèi)型 (reference type)

值類(lèi)型存儲(chǔ)是數(shù)據(jù)从铲,存儲(chǔ)于棧瘪校,派生于 System.ValueType

引用類(lèi)型的變量存儲(chǔ)對(duì)其數(shù)據(jù)的引用稱(chēng)為對(duì)象。存儲(chǔ)于堆名段。

值類(lèi)型渣淤、靜態(tài)變量被

GC回收嗎?

值類(lèi)型是在棧上吉嫩, 當(dāng)某方法返回時(shí)价认, 棧會(huì)恢復(fù)到該方法調(diào)用前的狀態(tài), 該方法在棧上分配的值類(lèi)型的內(nèi)存自然就釋放了自娩, 不必等GC用踩。PS:回收引用類(lèi)型

靜態(tài)字段 分配在Loader heap 中,非 GC heap,不受GC控制忙迁。
應(yīng)用程序域卸載的時(shí)候回收靜態(tài)變量

值類(lèi)型脐彩、引用類(lèi)型是否可以派生?

值類(lèi)型密封(seal)的姊扔,所以無(wú)法派生出新的值類(lèi)型惠奸。

引用類(lèi)型可以派生出新的類(lèi)型。

值類(lèi)型和引用類(lèi)型的區(qū)別

繼承System.Value的類(lèi)型都是值類(lèi)型恰梢,其他類(lèi)型都是引用類(lèi)型佛南。

引用類(lèi)型可以派生出新的類(lèi)型,而值類(lèi)型不能嵌言;

引用類(lèi)型存儲(chǔ)在堆中嗅回,而值類(lèi)型既可存儲(chǔ)在堆中也可以存儲(chǔ)在棧中。

引用類(lèi)型可以包含null值摧茴,值類(lèi)型不能(可空類(lèi)型功能允許將null賦給值類(lèi)型)绵载;

引用類(lèi)型變量的賦值只復(fù)制對(duì)對(duì)象的引用,而不復(fù)制對(duì)象本身苛白。而將一個(gè)值類(lèi)型變量賦給另一個(gè)值類(lèi)型變量時(shí)娃豹,將復(fù)制包含的值。當(dāng)比較兩個(gè)值類(lèi)型時(shí)购裙,進(jìn)行的是內(nèi)容比較懂版;而比較兩個(gè)引用類(lèi)型時(shí),進(jìn)行的是引用比較缓窜。

值類(lèi)型在內(nèi)存管理方面具有更好的效率定续,并且不支持多態(tài)谍咆,適合用作存儲(chǔ)數(shù)據(jù)的載體;引用類(lèi)型支持多態(tài)私股,適合用于定義應(yīng)用程序的行為摹察。

Int[]是引用類(lèi)型還是值類(lèi)型

數(shù)組類(lèi)型繼承System.Array,而System.Array繼承自System.Object倡鲸。所以所有的數(shù)組類(lèi)型都是引用類(lèi)型

引用類(lèi)型各概念

類(lèi):包含數(shù)據(jù)成員(字段)和函數(shù)成員(方法供嚎、屬性等)的數(shù)據(jù)結(jié)構(gòu)

接口:像一個(gè)協(xié)定,作為一個(gè)公共函數(shù)成員的命名集

委托:對(duì)具有特定參數(shù)列表和返回類(lèi)型的方法的引用峭状,通過(guò)委托克滴,將方法作為實(shí)體賦值給變量和作為參數(shù)傳遞

數(shù)組類(lèi)型:通過(guò)在某個(gè)類(lèi)型名后加一對(duì)方括號(hào)來(lái)構(gòu)造的,數(shù)組不用聲明就可以應(yīng)用。例如:int[];

用戶(hù)可以自定義類(lèi)型优床?

類(lèi)類(lèi)型(class type)劝赔、結(jié)構(gòu)類(lèi)型(struct type)、接口類(lèi)型(interface type)胆敞、枚舉類(lèi)型(enum

type)和委托類(lèi)型(delegate type)着帽。

哪些類(lèi)型支持泛型?

類(lèi)類(lèi)型移层、結(jié)構(gòu)類(lèi)型仍翰、接口類(lèi)型、委托類(lèi)型

變量

C# 中存在幾種變量(variable)观话,包括字段予借、數(shù)組元素、局部變量和參數(shù)频蛔,變量表示了存儲(chǔ)位置灵迫。

什么是裝箱和拆箱?

裝箱:從值類(lèi)型轉(zhuǎn)換到引用類(lèi)型帽驯。

拆箱:從引用類(lèi)型轉(zhuǎn)換到值類(lèi)型龟再。

裝箱

裝箱轉(zhuǎn)換允許將 value-type 隱式轉(zhuǎn)換為 reference-type。下列裝箱轉(zhuǎn)換:

從任何 value-type 到 object 類(lèi)型尼变。

從任何 value-type 到 System.ValueType 類(lèi)型。

從任何 non-nullable-value-type 到 value-type

實(shí)現(xiàn)的任何 interface-type浆劲。

從任何nullable-type到由nullable-type的基礎(chǔ)類(lèi)型實(shí)現(xiàn)的任何interface-type嫌术。

從任何enum-type到 System.Enum 類(lèi)型。

從任何具有基礎(chǔ) enum-type 的 nullable-type 到 System.Enum 類(lèi)型牌借。

裝箱轉(zhuǎn)換隱含著復(fù)制一份待裝箱的值

拆箱轉(zhuǎn)換

取消裝箱轉(zhuǎn)換允許將reference-type顯式轉(zhuǎn)換為value-type度气。存在以下拆箱轉(zhuǎn)換:

從 object 類(lèi)型到任何 value-type。

從 System.ValueType 類(lèi)型到任何 value-type膨报。

從任何interface-type到實(shí)現(xiàn)了該 interface-type 的任何non-nullable-value-type磷籍。

從任何interface-type到其基礎(chǔ)類(lèi)型實(shí)現(xiàn)了該interface-type的任何nullable-type适荣。

從 System.Enum 類(lèi)型到任何 enum-type。

從 System.Enum 類(lèi)型到任何具有基礎(chǔ) enum-type 的 nullable-type院领。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末弛矛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子比然,更是在濱河造成了極大的恐慌丈氓,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件强法,死亡現(xiàn)場(chǎng)離奇詭異万俗,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)饮怯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén)闰歪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蓖墅,你說(shuō)我怎么就攤上這事课竣。” “怎么了置媳?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,815評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵于樟,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我拇囊,道長(zhǎng)迂曲,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,537評(píng)論 1 296
  • 正文 為了忘掉前任寥袭,我火速辦了婚禮路捧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘传黄。我一直安慰自己杰扫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布膘掰。 她就那樣靜靜地躺著章姓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪识埋。 梳的紋絲不亂的頭發(fā)上凡伊,一...
    開(kāi)封第一講書(shū)人閱讀 52,184評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音窒舟,去河邊找鬼系忙。 笑死,一個(gè)胖子當(dāng)著我的面吹牛惠豺,可吹牛的內(nèi)容都是我干的银还。 我是一名探鬼主播风宁,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蛹疯!你這毒婦竟也來(lái)了戒财?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,668評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤苍苞,失蹤者是張志新(化名)和其女友劉穎固翰,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體羹呵,經(jīng)...
    沈念sama閱讀 46,212評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡骂际,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了冈欢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片歉铝。...
    茶點(diǎn)故事閱讀 40,438評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖凑耻,靈堂內(nèi)的尸體忽然破棺而出太示,到底是詐尸還是另有隱情,我是刑警寧澤香浩,帶...
    沈念sama閱讀 36,128評(píng)論 5 349
  • 正文 年R本政府宣布类缤,位于F島的核電站,受9級(jí)特大地震影響邻吭,放射性物質(zhì)發(fā)生泄漏餐弱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評(píng)論 3 333
  • 文/蒙蒙 一囱晴、第九天 我趴在偏房一處隱蔽的房頂上張望膏蚓。 院中可真熱鬧,春花似錦畸写、人聲如沸驮瞧。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,279評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)论笔。三九已至,卻和暖如春破停,著一層夾襖步出監(jiān)牢的瞬間翅楼,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,395評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工真慢, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人理茎。 一個(gè)月前我還...
    沈念sama閱讀 48,827評(píng)論 3 376
  • 正文 我出身青樓黑界,卻偏偏與公主長(zhǎng)得像管嬉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子朗鸠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理蚯撩,服務(wù)發(fā)現(xiàn),斷路器烛占,智...
    卡卡羅2017閱讀 134,695評(píng)論 18 139
  • { "Unterminated string literal.": "未終止的字符串文本胎挎。", "Identifi...
    栗子雨閱讀 7,892評(píng)論 0 3
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法忆家,內(nèi)部類(lèi)的語(yǔ)法犹菇,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法芽卿,線(xiàn)程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,660評(píng)論 18 399
  • { "Unterminated string literal.": "未終止的字符串文本揭芍。", "Identifi...
    一粒沙隨風(fēng)飄搖閱讀 10,591評(píng)論 0 3
  • 文、攝影:境由心成 "首夏猶清和卸例,芳草亦未歇"称杨。深居繁華鬧市中有這樣一處院落,三層居室錯(cuò)落有致筷转,圍墻是帶木...
    境由心成閱讀 1,221評(píng)論 1 1