当前位置:编程学习 > C#/ASP.NET >>

C#声明变量的那点事儿

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

补充:软件开发 , C# ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,