我有一门课,假设它叫“Apples”。假设该类位于名为“Apples”的文件夹中的 .cs 文件中
Project
-Apples
-Apples.cs
-main.cs
我如何在不写此内容的情况下引用它:
主文件
Apples.Apples.testVar = 2;
然后写
主要.cs:
Apples.testVar = 2;
有没有办法做到这一点,还是我必须忍受它或更改文件夹名称?
我有一门课,假设它叫“Apples”。假设该类位于名为“Apples”的文件夹中的 .cs 文件中
Project
-Apples
-Apples.cs
-main.cs
我如何在不写此内容的情况下引用它:
主文件
Apples.Apples.testVar = 2;
然后写
主要.cs:
Apples.testVar = 2;
有没有办法做到这一点,还是我必须忍受它或更改文件夹名称?
把它放在文件的顶部 -
using Apples = Apples.Apples;
如果您在 Visual Studio 中有一个文件夹并在其中创建一个类,Visual Studio(可能还有其他 IDE)会自动将该文件夹的名称附加到从该文件夹创建的任何文件的命名空间中。
这并不意味着命名空间必须保持这种状态。“文件夹”纯粹是出于组织目的,不参与代码的编译。文件名也与实际代码无关。如果您查看 Apples.cs 只需更改:
namespace Apples.Apples
{
//....
到
namespace Apples
{
//...
这只是您的 IDE 用作假设您想要什么的规则。您不需要遵循它。
编辑:至少这是我认为的误解,因为您专注于文件夹名称 - 这对代码没有任何意义,只对您很重要。此外,如前所述,您可能会对命名空间名称和类名称之间的歧义感到困惑。正如其他答案中提到的,将类命名为与其名称空间相同是一个坏主意。
默认情况下,您的项目的全局命名空间将与您的项目同名。因此,如果您将项目命名为“Apples”,然后创建了一个名为“Apples”的文件夹并在该文件夹中创建了一个名为“Apples”的类 - 然后您将按照命名空间链导航到您的类:
Apples.Apples.Apples
您得出的结论是,您必须根据文件夹/文件名执行此操作,但实际上是命名空间/类。您在这里有几个选项,但底线是为了消除混乱和混乱 2 或所有 3 个“苹果”需要更改。更改文件名或文件夹名将不起作用。您必须更改类名和至少一个命名空间名称。更合适的东西:
AppleProject.Apples.AppleBase
甚至简单到:
Apples.Apple // removed the extra namespace in the middle
您可以在 using 语句中为“Apples”起别名:
using Apples = Apples.Apples.testVar;
或者任何你想让它更容易阅读的东西。
是的,如果您使用的是 C#,您只需将其添加到您所在的代码文件顶部的 using 引用中:
例如:
使用 Apples.Apples;
如果项目集不在当前项目中,您只需要确保您拥有对项目集的引用。