CLR VIA
| ?標(biāo)題 | ?狀態(tài) | ?內(nèi)容 |
| 什么是CLR? 什么是托管模塊? 托管模塊由什么組成? 。net代碼的執(zhí)行過(guò)程 | ? | ?http://www.cnblogs.com/aaa6818162/p/4726581.html ? http://www.cnblogs.com/kingmoon/archive/2012/07/16/2594459.html ? ? ? 為了執(zhí)行程序,首先必須把它的IL轉(zhuǎn)換成本地CPU指令 ? 第二次調(diào)用WriteLine的情況 |
| PE文件 | ? | http://lwglucky.blog.51cto.com/1228348/283812/ |
| ?元數(shù)據(jù)的 | ? | ?http://www.cnblogs.com/bluewater/archive/2006/10/17/531639.html 元數(shù)據(jù)的邏輯結(jié)構(gòu)類似于數(shù)據(jù)庫(kù)中的表,所以被稱為元數(shù)據(jù)表。元數(shù)據(jù)表有列和行,每一行都是不重復(fù)的,都有唯一的RID(表索引),RID就像是數(shù)據(jù)庫(kù)表的主建。數(shù)據(jù)庫(kù)有Schema,如每一列的類型,大小等,元數(shù)據(jù)也有類似的東西,他們被稱為“元-元數(shù)據(jù)”,包含表中記錄的大小,列的大小,偏移等。 |
? .Net 托管模塊與程序集的關(guān)系 | ? | ?http://blog.csdn.net/kmguo/article/details/17055065 |
| ? | ? | ? |
? .NET概念:.NET程序編譯和運(yùn)行 | ? | ?http://blog.csdn.net/yysyangyangyangshan/article/details/7306346 應(yīng)用程序域(AppDomain)。可以理解成很多應(yīng)用程序域都可以運(yùn)行在同一個(gè).NET的進(jìn)程中,可以降低系統(tǒng)消耗,同時(shí)不同的域之間互相隔離,在安全性方面有保障。另外對(duì)于同一個(gè)進(jìn)程內(nèi)不同域之間的通信也相對(duì)簡(jiǎn)單一點(diǎn) |
| ? | ? | ?
public static void Main() { Int32 v = 5; // 創(chuàng)建值變量 Object o = v; // 裝箱 v = 123; // Changes the unboxed value to 123 Console.WriteLine(v + ", " + (Int32) o); // Displays "123, 5" ,裝箱兩次 } |
| ?驗(yàn)證四種判等方式 | ? | ? ①Object的靜態(tài)方法ReferenceEquals: ? 只適用于判斷兩個(gè)引用是否指向同一個(gè)實(shí)例,不適用于值類型(或者說(shuō)用于值類型是沒(méi)意義的,因?yàn)橛肋h(yuǎn)返回false)。如下: ? ? TestEqual?te?=?new?TestEqual(); bool?b1=?object.ReferenceEquals(te,te); bool?b2?=?object.ReferenceEquals(1,?1); ?? b1為true,b2為false。b2為false的原因是兩個(gè)整型值1裝箱之后是兩個(gè)不同的Object實(shí)例。 ? ? ②Object中定義的實(shí)例級(jí)虛方法Equals: ? ? 其默認(rèn)行為是判斷引用是否相等,引用類型從Object中繼承了這一行為,如下: ? ???TestEqual?te1=?new?TestEqual(); ???TestEqual?te2?=?new?TestEqual(); ???bool?b4=?te1.Equals(te2); ???bool?b5?=?te1.Equals(te1); ???Console.WriteLine(b4); ???Console.WriteLine(b5); ? ? 輸出結(jié)果很明顯第一個(gè)假,第二個(gè)真。 ? 但是對(duì)于值類型來(lái)說(shuō),由于ValueType重寫了這個(gè)方法,所以其行為不同,可以判斷值是否相同,而不是引用。 ? ? 如下: ? ? ?????int?num1?=?15; ?????int?num2?=?15; ?????bool?b3?=?num1.Equals(num2); ??Console.WriteLine(b3); ? 雖然num1和num2是兩個(gè)變量,但是只要它們的值一樣,b3結(jié)果就為true。 ? ? ③?=?=運(yùn)算符: ? ? 應(yīng)用于值類型的時(shí)候其行為是判斷值是否相等。應(yīng)用于引用類型(String除外)的時(shí)候判斷引用是否相同。 ? ? ④Object中的靜態(tài)方法Equals: ? ? 它接受兩個(gè)Object類型的參數(shù),它會(huì)調(diào)用第一個(gè)參數(shù)的實(shí)例級(jí)Equals方法,以第二個(gè)參數(shù)作為該方法的參數(shù)來(lái)進(jìn)行判等。所以其行為表現(xiàn)出來(lái)和實(shí)例級(jí)的Equals方法一樣。只是其內(nèi)部添加了對(duì)于兩個(gè)參加判等的參數(shù)是否本身已經(jīng)是同一個(gè)引用的判斷,還有兩個(gè)參數(shù)是否為null的判斷。 |
| ?常量const | ? | http://www.cnblogs.com/janes/archive/2011/07/11/2103215.html? 常量是恒定不變的,在編譯時(shí)就確定了它的值,編譯后直接將值存到元數(shù)據(jù)中。變量類型只能是編譯器能直接識(shí)別的基元類型,不能是引用類型,因?yàn)橐妙愋托枰谶\(yùn)行時(shí)調(diào)用構(gòu)造函數(shù)進(jìn)行初始化。 通過(guò)ILDasm工具查看一下,const變量編譯后為static literal類型,所以不難理解,常量是針對(duì)類的一部分,而不是實(shí)例的一部分 |
| ?只讀字段readonly | ? | ?類的數(shù)據(jù)成員通常用來(lái)保存一個(gè)值類型的實(shí)例或者指向引用類型的引用,CLR支持讀寫和只讀兩種數(shù)據(jù)成員,其中只讀數(shù)據(jù)成員使用readonly修飾的 |
| ? | ? | ?其實(shí)很簡(jiǎn)單,C#中方法中的參數(shù)也是一個(gè)變量,這個(gè)變量也需要有一個(gè)地址。 對(duì)于引用類型的方法參數(shù),傳入的對(duì)象如果不加Ref,方法參數(shù)也就是這個(gè)變量也將被創(chuàng)建,不過(guò)因?yàn)槭且妙愋?#xff0c;所以地址直接指向所傳入對(duì)象的地址。所以實(shí)際上是有兩個(gè)變量,但都指向了同一處地址。 如果加了Ref,那么方法參數(shù)這個(gè)變量,將不被創(chuàng)建,也就是只有一個(gè)變量,指向了一處地址。 引用類型加不加Ref沒(méi)有本質(zhì)區(qū)別,只是多個(gè)了變量而已。 |
? string/String類型作為參數(shù)是傳值還是傳址_AX | ? | ?class Program ? ? string在.net中是個(gè)特殊的對(duì)象,當(dāng)把一個(gè)string傳給一個(gè)方法時(shí)其實(shí)是做了一個(gè)“s=s”的操作,如果是其它對(duì)象,當(dāng)然是前者得到后者的一個(gè)地址引用,而string對(duì)象每做一次賦值操作,被賦值的string都會(huì)重開(kāi)一個(gè)內(nèi)存空間將后者的值復(fù)制過(guò)來(lái),所以才有了你的結(jié)果。? string類是引用類型,在賦值時(shí)是傳址的。但如果用作函數(shù)參數(shù)的話系統(tǒng)會(huì)自動(dòng)復(fù)制一個(gè)string類進(jìn)行運(yùn)算,因?yàn)楹瘮?shù)默認(rèn)是按值傳遞的。如果函數(shù)要傳址,請(qǐng)?jiān)诤瘮?shù)定義時(shí),在參數(shù)前加上ref,在使用時(shí)也加上ref就可以了。{ |
| ?C#友元程序集 | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
| ? | ? | ? |
總結(jié)
- 上一篇: 每天一道算法题(39)——含有重复字符的
- 下一篇: (原创)优酷androidclient