日期:2014-05-18 浏览次数:20883 次
C#声明变量的语法(三种): 类型 变量名(强类型声明) var 变量名(待编译时确定类型) dynamic 变量名(待执行时确定类型) 到底哪种执行效率高呢? 还是不说废话,上代码,需要知道结果,可以copy代码后执行看看: 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; } } }