在C#中声明实例

joe*_*iks 0 c# syntax

我是否必须在c#中"双重声明"每个新实例?

Obj sb = new Obj(); 
Run Code Online (Sandbox Code Playgroud)

VB比较便宜

Dim sb as new Obj() 
Run Code Online (Sandbox Code Playgroud)

和Python最便宜

sb=Obj()
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 6

好吧,从C#3开始,您可以使用var局部变量:

var x = new Dictionary<string, string>();
Run Code Online (Sandbox Code Playgroud)

请注意,这与Python声明非常不同:变量x仍然是类型Dictionary<string, string>; 它只是编译器从赋值的右侧推断出类型.因此,您仍然可以获得IntelliSense支持以及静态类型的所有其他好处.(如果你想要动态类型,你可以使用dynamicC#4,但这是一个非常不同的功能.)

部分添加了此功能以支持匿名类型,尽管它在其他情况下也非常有用; 最值得注意的是,当你调用构造函数.

需要记住的一些事项:

  • 适用于局部变量,而不适用于实例或静态变量
  • 只能在同一语句中声明和分配时才能使用它
  • 编译器必须能够从赋值中推断出具体类型; 你不能写

    var x = null;
    
    Run Code Online (Sandbox Code Playgroud)

    例如.

  • 牢记可读性.如果分配的是哪种类型并不明显,请考虑使用显式声明
  • 如果您以后想要分配一个不太具体的表达式,您可能希望使用显式类型
  • 隐式类型有助于强调什么代码是做,而不是如何它做它; 对于"如何"特别重要的代码位,请考虑仍使用显式声明