0

我真的很困惑var. 我知道,这使代码更易于阅读,但是速度和内存呢?C#
var

一个。

  1. var a = 100;
  2. int b = 100;
  3. int c; c = 100;

B.

  1. var listA = new List<obj>();
  2. List<obj>listB = new List<obj>();
  3. List<obj>listC; listC = new List<obj>();

哪个更快?
有依赖类型吗?
在这两种情况下分配了多少内存以及何时分配了内存?

4

6 回答 6

4

哪个更快?

两者都不是,它们是一样的。

有依赖类型吗?

我不确定你在这里问什么,但是这些代码片段一旦被编译就没有区别,所以我不会。

在这两种情况下分配了多少内存以及何时分配了内存?

对所有人来说都是一样的。例如int,所有情况下都是 32 位。对于List示例,所有三个都将分配一个单词作为引用,加上实际列表实例的内存。

于 2013-04-25T14:59:57.337 回答
2

它纯粹是编译步骤功能。编译器推断左侧表达式的类型,并将其用作变量类型。所以产生的 IL 将是相同的。

所以:

var list1 = new List<int>();
List<int> list2 = new List<int>();

完全相同。但是我可以看到一些示例,其中指定类型会产生一些影响,例如:

var i1 = 5;
int i2 = 5;
//vs:
var i2 = 5;
object i2 = 5;

因此,如果实际表达式类型与声明的变量类型完全相同,那么它们是完全相同的。但var如果表达式类型和变量类型不同,则可能会有所不同。

于 2013-04-25T14:58:50.783 回答
1

什么时候使用var,什么地方不使用。(因为这里已经回答了所有其他问题)为什么var?- 匿名类型和 LINQ

匿名(临时使用)类型:

var v = new { Amount = 108, Message = "Hello" };

一般的:

利用:

var myList = new List<string>();

这里很明显是什么类型myList- 代码阅读是好的

不要使用:

var properties = myPropertyHandler.GetProperties();

在这里,您不知道 GetProperties 返回什么类型 - 代码阅读不好。宣布:

AppProperties properties =  myPropertyHandler.GetProperties();
于 2013-04-25T16:13:48.780 回答
1

var关键字只是一个语法糖。

它不存在于 IL 中,因此没有区别。

重复主题:

在 C# 中使用“var”关键字会影响性能吗?

使用'var'会影响性能吗?

于 2013-04-25T15:01:54.820 回答
0

var 关键字只有在 C# 编译器生成程序集的 IL 代码时才起作用,要创建的变量类型由表达式右侧计算(必须指定且不能为空)。Var 不会影响运行时的任何内容。

于 2013-04-25T15:01:09.217 回答
0

var是从右边语句返回的任何内容中推断出来的。这是由编译器完成的,所以当程序实际运行时,没有区别。

但是请注意,如果语句产生意外类型,您将不会收到编译器错误。

于 2013-04-25T15:03:41.707 回答