[C#.NET] 使用 Reflector.NET 反編譯 / 觀察 var 隱性函數
1.C#的 var隱函型別變數 相當的方便,可以讓你在不知變數型態下宣告使用之。
2.宣告方式跟一般宣告的方式一樣,var隱函型別變數 是由編譯器 (Compiler) 判斷型別後編譯而成,所以設計師不用知道變數型態,編譯器會幫你做。
3.下載 .NET Reflector,解壓縮。
就用以下這段沒有營養的程式碼並建構方案,然後再用.NET Reflector 觀察VS對我們的 var 下了什麼魔法
{
var a="點部落" ;
var b = 10;
Console.WriteLine(a.GetType().Name);
Console.WriteLine(b.GetType().Name);
var c = new string[] { "霹靂", "無敵", "余小章" };
var d = new ArrayList();
for (var i = 0; i < 10; i++)
{
d.Add(i);
}
foreach (var item in c)
{
Console.WriteLine(item.GetType().Name);
}
}
執行Reflector.exe→選擇.Net版本→開啟上面編譯好的EXE
然後再依自己所要觀察的事件查詢。
很明顯的右邊的程式碼跟我們寫的有點不太一樣,因為VS已經幫我們判斷好資料型態並編譯完成。
4.結語:
var 雖然在偷懶時好用,但要看情況使用,否則將常到惡果;想想整段Code都是var,那將會是什麼樣的情況,var也無法取得所有類別的方法,若遇到無法取得類別方法時,表示不能用var了,還是乖乖的宣告正確的型態吧!
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET