首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在方法外部使用var

在方法外部使用var
EN

Stack Overflow用户
提问于 2009-12-19 00:58:45
回答 3查看 9.1K关注 0票数 17

我想使用var关键字在我的类中声明一个字段,但是var似乎只在方法中起作用。

我的代码看起来像这样:

代码语言:javascript
运行
复制
public static Dictionary<string, string> CommandList = new Dictionary<string, string>{};

我想要有:

代码语言:javascript
运行
复制
public static var CommandList = new Dictionary<string, string>

为什么这不可能呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-19 01:07:28

我关于这个主题的文章:

Why no var on fields?

总结一下:

  1. 如果我们有"var“字段,那么在分析表达式之前不能确定字段的类型,这发生在我们已经需要知道字段的类型之后,
  2. 如果这些引用中有很长的链,甚至循环怎么办?所有这些算法都必须重新编写和测试,在这种情况下,顶级类型信息是从中确定的,而不是被所使用。
  3. 如果你有"var“字段,那么初始化器可能是匿名类型的。假设该字段是公共的。在CLR或CLS中还没有任何标准来说明公开匿名类型字段的正确方式是什么。
票数 31
EN

Stack Overflow用户

发布于 2009-12-19 01:09:19

C# reference

  • 从Visual C# 3.0开始,在方法作用域中声明为的变量可以具有隐式类型var。

也来自The C# Programming Reference

仅当在同一语句中声明并初始化局部变量时,才能使用

  • var;该变量不能初始化为null,也不能初始化为方法组或匿名函数。
  • 变量不能用于类范围内的字段。

它并不是为你想要的用途而设计的。

它的主要目标是允许在代码中支持匿名类型,另外的优点是允许以一种简洁的方式指定局部变量。

票数 6
EN

Stack Overflow用户

发布于 2009-12-19 01:03:49

简短的答案是因为规范上说这是不合法的。;-)

一般来说,这不是你想要做的。成员的类型应该是IDictionary<string, string>而不是Dictionary<string, string>。它很小,但通常最好在外部可见的对象中使用接口,这样您可以在以后更改类型,而不会影响代码的客户端。编译器只是给你一个小小的推动,引导你朝那个方向前进。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1929492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档