var比明确键入的变量更耗费资源吗?

时间:2017-01-11 11:51:58

标签: c# variables resources var

因此,我和我的一些同事正在研究var的用法以及为什么我们应该/不应该使用它。

我想知道var是否比明确键入的变量更耗费资源?

根据我的理解,它只是一个非常动态的变量,并且(与其他显式类型的变量传递给var的行为相同/使用相同数量的资源)。

请详细说明有关该主题的更多知识吗?

提前致谢!

3 个答案:

答案 0 :(得分:2)

Var只是用于明确写出类型的语法糖。它可以节省您的输入,也意味着如果您更改了分配类型,则无需更新变量声明。

例如,如果您有以下代码:

        var s = "My String";

        String t = "My String";

然后使用ILSpy对其进行反编译s最初被声明为var的事实已丢失。当编译器生成IL时,它意识到变量s是一个字符串,因此用var替换String

答案 1 :(得分:1)

隐式类型局部变量的强类型在编译时确定,因此在运行时对应用程序的性能没有任何影响。

var关键字简化了开发人员必须在变量声明中键入完整对象名称的任务,而不是其他任何内容。

  

重要的是要理解var关键字并不意味着"变体"并不表示变量是松散类型的,也不是后期绑定的。它只是意味着编译器确定并分配最合适的类型。    - Implicitly Typed Local Variables (C# Programming Guide)

答案 2 :(得分:0)

using System;

namespace ConsoleApp
{
    class Program
    {
        static void Main()
        {
            var stringImplicit = "Blah";
            string stringExplicit = "Blah";

            Console.WriteLine("IMPLICIT : {0} - {1}", stringImplicit, stringImplicit.GetType().Name);
            Console.WriteLine("EXPLICIT : {0} - {1}", stringExplicit, stringExplicit.GetType().Name);

            Console.ReadKey();
        }
    }
}

无论如何,你都可以看到它们变得相同。如果你查看IL(中间语言 - 编译代码),你会看到完全相同的“字节码”。你所要做的就是要求编译器解决它。编译完成后,不再存在计算类型的“努力”。