当前位置:  开发笔记 > 编程语言 > 正文

为什么我们不能在类级别声明var a = new List <string>?

如何解决《为什么我们不能在类级别声明vara=newList<string>?》经验,为你挑选了2个好方法。

我知道我们不能在课堂上这样做,但在方法层面,我们总能做到这一点.

var myList=new List // or something else like this

这个问题出现在我的脑海中,因为无论我们在哪里声明这样的变量.我们总是在表达式的RHS中提供类型信息.所以编译器不需要做类型猜测.(如果我错了,请纠正我).

所以问题仍然是为什么不在班级,而在方法层面允许



1> Brian..:

实现此功能存在技术问题.常见的情况看起来很简单,但更难的情况(例如,引用链或循环中的其他字段的字段,包含匿名类型的表达式)则不然.

请参阅Eric Lippert的博客,以获得深入的解释:为什么没有字段变量?



2> angry person..:

编译器人员只是没有实现支持.

它完全是编译魔术,并且编译器实际上没有在IL中写入"在运行时找出类型",它知道类型并构建它,因此它也可以为成员完成.

它只是没有.

我很确定如果你在C#编译器团队中问过一个真正的编译人员,你会得到正式的东西,但是这里没有任何神奇的事情发生,并且应该可以为成员字段做同样的事情.

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有