C#中"var"的命名约定

Mik*_*ike -4 c# naming-conventions

如何正确初始化var类型的类?我经常看到这个版本:

var converter = new Converter();
Run Code Online (Sandbox Code Playgroud)

类的实例应该用PascalCase编写,对吧?为什么它不同var

Gil*_*een 5

我认为你误解了var什么是类,引用和var(以及每个的命名约定)之间的含义和混淆.

那是什么var来自docs:

在方法范围声明的变量可以具有隐式"类型"var.隐式类型的局部变量是强类型的,就像您自己声明了类型一样,但编译器确定了类型

来自隐式类型的局部变量:

var关键字指示编译器从初始化语句右侧的表达式推断变量的类型

所以在这种情况下var converter = new Converter();:

  • 编译器确定varas Converter.
  • 您正在创建一个名为的引用converter- 应使用camelCaseing命名.
  • 引用的显式类型是Converter- 应使用PascalCasing命名.

写作var converter = new Converter();与写作相同Converter converter = new Converter();


在C#中,var适用于您不知道显式类型(如匿名类型)或作为一种简单的写入方式的情况:

Dictionary<SomeTpye, List<SomeOtherType<AndSomeGenericParameter>> variable = 
    new Dictionary<SomeTpye, List<SomeOtherType<AndSomeGenericParameter>>();
Run Code Online (Sandbox Code Playgroud)

如下:

var variable = new Dictionary<SomeTpye, List<SomeOtherType<AndSomeGenericParameter>>();
Run Code Online (Sandbox Code Playgroud)

因为它是类型的"别名"而不是类型本身,它保持语言关键字(而不是类型)的约定,并以小写形式编写.