Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么这个名称空间命名约定不适用于我的枚举?_C#_Namespaces - Fatal编程技术网

C# 为什么这个名称空间命名约定不适用于我的枚举?

C# 为什么这个名称空间命名约定不适用于我的枚举?,c#,namespaces,C#,Namespaces,以下是CPSLibrary类库中存在的我的Enums.cs文件: namespace CPSLibrary.CPSEnums { public enum GoalType { STRATEGIC = 1, TACTICAL = 2 } } 在引用CPS库的web应用程序中的代码隐藏文件中,我执行以下操作: using CPSLibrary; /* ... farther down the page ... */ proj.Goal =

以下是CPSLibrary类库中存在的我的Enums.cs文件:

namespace CPSLibrary.CPSEnums
{
    public enum GoalType
    {
        STRATEGIC = 1,
        TACTICAL = 2
    }
}
在引用CPS库的web应用程序中的代码隐藏文件中,我执行以下操作:

using CPSLibrary;

/*  ... farther down the page ... */
proj.Goal == CPSLibrary.CPSEnums.GoalType.STRATEGIC;
这会起作用,但如果我尝试像cpsenms.GoalType.STRATEGIC那样引用它,则不会。此外,如果我使用cplibary.cpsnums添加,那么我可以简单地将其引用为GoalType.STRATEGIC

我需要做什么才能识别cpsenms.GoalType.STRATEGIC

奇怪的是,其他使用CPSLibrary类库的类可以将其引用为cpsnums.GoalType.STRATEGIC

附加问题:在本例中,CPSENUM是否有一个技术术语?容器之类的?或者它只是名称空间的一部分,没有单独的术语


TIA

因为您的命名空间名称是CPSLibrary.cpsnums,所以您甚至可以这样编写:

using CPSLibrary.CPSEnums;
....
proj.Goal == GoalType.STRATEGIC; //NO NAMESPACE NAME

当您使用CPSLibrary编写时,您将引用已定义名称空间的父名称空间。这是完全正确的。但要访问枚举类型,您需要指定其名称空间,其命名空间为:CPSLibrary.cpsnums

,因为您的命名空间名称为CPSLibrary.cpsnums,所以您甚至可以这样编写:

using CPSLibrary.CPSEnums;
....
proj.Goal == GoalType.STRATEGIC; //NO NAMESPACE NAME

当您使用CPSLibrary编写时,您将引用已定义名称空间的父名称空间。这是完全正确的。但要访问枚举类型,需要指定其名称空间,其名称空间为:CPSLibrary.cpsnums

请尝试将using语句更改为

using CPSEnums = CPSLibrary.CPSEnums; 
这应该允许你以你想要的方式引用它

/*  ... farther down the page ... */
proj.Goal == CPSEnums.GoalType.STRATEGIC;

尝试将您的using语句更改为

using CPSEnums = CPSLibrary.CPSEnums; 
这应该允许你以你想要的方式引用它

/*  ... farther down the page ... */
proj.Goal == CPSEnums.GoalType.STRATEGIC;
试试这个:

namespace CPSLibrary
{
    public static class CPSEnums
    {
        public enum GoalType
        {
            STRATEGIC = 1,
            TACTICAL = 2
        }
    }
}


var x = CPSEnums.GoalType.STRATEGIC;
试试这个:

namespace CPSLibrary
{
    public static class CPSEnums
    {
        public enum GoalType
        {
            STRATEGIC = 1,
            TACTICAL = 2
        }
    }
}


var x = CPSEnums.GoalType.STRATEGIC;

为什么要编写cpsenms.GoalType.STRATEGIC而不是GoalType.STRATEGIC?还有9次击键!我想这只是个人的一个怪癖——在某些事情上,比如enum,我喜欢在代码中看到一些组织,而不是停留在上面。为什么要编写cpsnums.GoalType.STRATEGIC而不是GoalType.STRATEGIC?还有9次击键!我想,这只是个人的一个怪癖——在某些事情上,比如枚举,我喜欢在代码中看到一些组织,而不是停留在它上面。我认为这可能是答案,但它没有解释为什么结构保留在类库本身中,但在编译时它似乎变平了。如果我在CPSSlibrary命名空间中的另一个类中,我可以使用CPSNums访问GoalType,但如果不引用CPSNums,我就不能直接访问GoalType。如果它真的是一个单独的名称空间,那么我需要一个使用CPSLibrary.cpsnums的名称空间来访问GoalType。在那里,它是一个文件夹式的结构,但一旦编译,所有这些都会消失吗?为什么会这样?我认为这是可能的答案,但它没有解释为什么结构保留在类库本身中,但在编译时它似乎变得平坦。如果我在CPSSlibrary命名空间中的另一个类中,我可以使用CPSNums访问GoalType,但如果不引用CPSNums,我就不能直接访问GoalType。如果它真的是一个单独的名称空间,那么我需要一个使用CPSLibrary.cpsnums的名称空间来访问GoalType。在那里,它是一个文件夹式的结构,但一旦编译,所有这些都会消失吗?为什么呢?