因此,我和我的一些同事正在研究var的用法以及为什么我们应该/不应该使用它。
我想知道var是否比明确键入的变量更耗费资源?
根据我的理解,它只是一个非常动态的变量,并且(与其他显式类型的变量传递给var的行为相同/使用相同数量的资源)。
请详细说明有关该主题的更多知识吗?
提前致谢!
答案 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(中间语言 - 编译代码),你会看到完全相同的“字节码”。你所要做的就是要求编译器解决它。编译完成后,不再存在计算类型的“努力”。