C#聲明變量的語法(三種):
類型 變量名(強類型聲明)
var 變量名(待編譯時確定類型)
dynamic 變量名(待執行時確定類型)
到底哪種執行效率高呢?
還是不說廢話,上代碼,需要知道結果,可以copy代碼後執行看看:
[csharp]
using System;
using System.Diagnostics;
namespace Var_Test
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("本程序旨在測試 強類型 var(推斷類型) dynamic(動態類型) 的執行效率");
Console.WriteLine("\t測試方法:");
Console.WriteLine("\t\t通過各種聲明引用類型的變量1000000次,並計時,最後輸出計時。");
Console.WriteLine("----\t測試\tvar(推斷類型)\t----");
Stopwatch sw_2 = new Stopwatch();
sw_2.Start();
for (int i = 0; i < 1000000; i++)
{
var p = new People();
p.Name = i.ToString();
p.Age = i;
}
sw_2.Stop();
Console.WriteLine("----\t時間\t{0}", sw_2.ElapsedMilliseconds);
Console.WriteLine("----\t測試\t強類型\t----");
Stopwatch sw_1 = new Stopwatch();
sw_1.Start();
for (int i = 0; i < 1000000; i++)
{
People p = new People();
p.Name = i.ToString();
p.Age = i;
}
sw_1.Stop();
Console.WriteLine("----\t時間\t{0}",sw_1.ElapsedMilliseconds);
Console.WriteLine("----\t測試\tdynamic(動態類型)\t----");
Stopwatch sw_3 = new Stopwatch();
sw_3.Start();
for (int i = 0; i < 1000000; i++)
{
dynamic p = new People();
p.Name = i.ToString();
p.Age = i;
}
sw_3.Stop();
Console.WriteLine("----\t時間\t{0}", sw_3.ElapsedMilliseconds);
Console.WriteLine("測試結果:通過強類型聲明和Var聲明基本相當(Var略比強類型慢),原因,var在程序編譯時確定類型,強類型在聲明時確定類型。而.net應用程序在第一次執行時才進行具體編譯。");
Console.WriteLine("\t\t通過dynamic聲明變量,很耗時。");
Console.WriteLine("測試結束。按任意鍵退出。");
Console.ReadKey();
}
}
class People
{
public string Name { get; set; }
public int Age { get; set; }
}
}
作者:ymchinabye