注意到,匯編器輸出中的改變: Class 1 Methods: 1;
Output
hell
偽指令.class之後是類的名稱。它在IL中是可選的,讓我們通過添 加一些類的特性來增強這個類的功能。
a.il
.assembly mukhi {}
.class private auto ansi zzz
{
.method public hidebysig static void vijay()il managed
{
.entrypoint
ldstr "hell"
call void System.Console::WriteLine(class System.String)
ret
}
}
Output
hell
我們添加了 3個特性到類的偽指令中。
private:這 表示了對類的成員的訪問被約束為只能在當前類中。
auto:這表示類在內存中的布局將只由運行 時來決定,而不是由我們的程序決定。
ansi:源代碼通常被劃分為兩個主要的類別:托管代碼和 非托管代碼。
以諸如C語言編寫的代碼被稱為非托管代碼或不可信任的代碼。我們需要一個特性來 處理非托管代碼和托管代碼之間的互操作。例如,當我們想要在托管和非托管代碼之間轉移字符串時,這 個特性會被使用到。
如果我們跨越托管代碼的邊界並鑽進非托管代碼的領域,那麼一個字符串 ——由2字節Unicode字符組成的數組,將會被轉換為一個ANSI字符串——由1字節 ANSI字符組成的數組;反之亦然。修飾符ansi用於消除托管和非托管代碼之間的轉換。
a.il
.assembly mukhi {}
.class private auto ansi zzz extends System.Object
{
.method public hidebysig static void vijay()il managed
{
.entrypoint
ldstr "hell"
call void System.Console::WriteLine(class System.String)
ret
}
}
Output
hell