为什么我不能暗中解决?

时间:2014-06-23 16:46:06

标签: c# implicit

我总是右键单击以隐式解析命名空间。

但是对于某些命名空间,我无法隐式解决它并且必须显式解决它,导致像program1.logging.ErrorLogger.ErrorArise这样的代码。为什么我无法隐式解决?

2 个答案:

答案 0 :(得分:3)

检查这个小提琴: https://dotnetfiddle.net/6Px9BQ

问题是,有两个或多个类共享相同的名称,因此不可能隐含地知道您引用的是什么,因此您需要通过提供其完整的命名空间名称来指定名称explicit。

如果您不想一直指定长限定符,可以像这样缩短它们:

Apple.Berry.Cheese.Cake cake = new Apple.Berry.Cheese.Cake();

缩短:

using abc = Apple.Berry.Cheese;

abc.Cake cake = new abc.Cake();

答案 1 :(得分:0)

Visual Studio 为您提供了很多功能,并且可以轻松地让您传递一些概念。提供的工具之一是您可以右键单击以在代码文件的顶部添加using指令,该指令向编译器发出编译时类名称的含义。

但是如果两个名称空间具有相同的类名,并且两个名称空间在同一个类中使用,则必须在每种情况下明确告诉编译器要使用的内容。

相关问题