为什么我不能隐式解析?

本文关键字:不能 为什么 | 更新日期: 2023-09-27 18:09:52

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

但是对于某些名称空间,我不能隐式地解析它,而必须显式地解析它,从而导致类似program1.logging.ErrorLogger.ErrorArise的代码。为什么不能隐式解析?

为什么我不能隐式解析?

检查以下内容:https://dotnetfiddle.net/6Px9BQ

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

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

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

缩短:

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

Visual studio为您提供了很多功能,并且可以轻松地让您跳过一些概念。提供的一个工具是,你可以右键单击,在代码文件的顶部添加一个using指令,它告诉编译器在编译时类名的含义。

但是如果两个命名空间具有相同的类名,并且它们都在同一个类中使用,那么您必须明确地告诉编译器在每种情况下使用什么