// 方法 1
using System;
class MainClass{
public static void Main(){
bool isOk = false;
if (isOk) {
// do something
}
}
}
// 方法 2
using System;
class MainClass{
public static void Main(){
bool isOk = false;
if (Ok == true) {
// do something
}
}
}
方法 1 是我常用的寫法,一直以來都是習慣這麼寫,對於方法 2 感覺似乎有點多餘,但不可否認,方法 2 的確是比較明顯。
想確認一下兩者寫法對於 IL 是否有任何差異。
c# 程式碼透過編譯器變成 IL(Intermediate Language) 然後在VM上面執行
於是我透過 Ildasm.exe (IL 反組譯工具) 將 exe 檔案進行反組譯看看裡面的 IL
結果如下
方法 1
.method public hidebysig static void Main() cil managed
{
.entrypoint
// 程式碼大小 11 (0xb)
.maxstack 1
.locals init (bool V_0,
bool V_1)
IL_0000: nop
IL_0001: ldc.i4.0
IL_0002: stloc.0
IL_0003: ldloc.0
IL_0004: stloc.1
IL_0005: ldloc.1
IL_0006: brtrue.s IL_000a
IL_0008: nop
IL_0009: nop
IL_000a: ret
} // end of method MainClass::Main
方法 2
.method public hidebysig static void Main() cil managed
{
.entrypoint
// 程式碼大小 11 (0xb)
.maxstack 1
.locals init (bool V_0,
bool V_1)
IL_0000: nop
IL_0001: ldc.i4.0
IL_0002: stloc.0
IL_0003: ldloc.0
IL_0004: stloc.1
IL_0005: ldloc.1
IL_0006: brtrue.s IL_000a
IL_0008: nop
IL_0009: nop
IL_000a: ret
} // end of method MainClass::Main
兩者沒有任何差異Ilasm.exe (IL 組譯工具) 說明
http://msdn.microsoft.com/zh-tw/library/496e4ekx(v=vs.110).aspx
IL 範例說明
http://60-251-1-52.hinet-ip.hinet.net/taiwan/msdn/columns/DoNet/IL.htm
IL 說明
http://hi.baidu.com/fastlei/item/2cad855555b4f6444eff20fd
其實我覺得只要變數名稱夠清楚,第一種寫法反而比較明顯,而且接近口語或自然語言。
回覆刪除其實我的內心深處是希望有差別的~哈哈哈~這樣我才可以說你們要用第一種!!!!!XDDD
刪除