为什么"var"关键字设置为特定类型?

Adr*_* K. 3 c# anonymous-types

为什么var a = 7;要将a类型设置为某种类型(即int代替byte)?C#编译器是否有任何规则/默认值/检查?

Jon*_*eet 14

目前尚不清楚"动态"是什么意思 - 但C#编译器只是遵循规范中规定的规则.对于那种声明:

var a = expression;
Run Code Online (Sandbox Code Playgroud)

类型aexpression.表达式7是类型的int,虽然它被称为范围内的常量byte,允许:

byte a = 7;
Run Code Online (Sandbox Code Playgroud)

编译.转换的可用性byte虽然不会改变表达式的类型,7intC#编译器使用的类型也是如此a.

请注意,我建议不要使用var像这样的常量.它结束了代码可以得到周围人的界限相当混乱int,uint,longvar是为了帮助匿名类型,并帮助使代码易读.当它使代码更少可读,只是不使用它.

  • @AdrianK:冒着商业化的风险,我*知道*深度的C#仔细解释`var` :) (3认同)