Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.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# - Fatal编程技术网

C# 我可以在枚举中保留类的实例吗?

C# 我可以在枚举中保留类的实例吗?,c#,C#,无论在哪里,我都会遇到以字符串作为值,以int作为索引的枚举,但如果我想将实例保持在枚举中,该怎么办 public enum TestEnum { new Person("John"), new Person("Jack") } 可能吗? 只是问问 //编辑2019:我当时太蠢了,应该用作数组,这是不可能的 枚举类型是声明一组命名常量的不同值类型(§4.1) 枚举类型声明的主体定义了零个或多个枚举成员,这些成员是枚举类型的命名常量。两个枚举成员不能具有相同的名称 每个枚举成员都有一

无论在哪里,我都会遇到以字符串作为值,以int作为索引的枚举,但如果我想将实例保持在枚举中,该怎么办

public enum TestEnum
{
   new Person("John"),
   new Person("Jack")
}
可能吗? 只是问问

//编辑2019:我当时太蠢了,应该用作数组,这是不可能的

枚举类型是声明一组命名常量的不同值类型(§4.1)

枚举类型声明的主体定义了零个或多个枚举成员,这些成员是枚举类型的命名常量。两个枚举成员不能具有相同的名称

每个枚举成员都有一个关联的常量值。此值的类型是包含枚举的基础类型。每个枚举成员的常量值必须在枚举的基础类型的范围内

枚举具有命名常量和关联常量值的成员。每个枚举还有一个底层类型,默认为
int
。常量值可以显式给出,也可以隐式给出

enum Color 
{
    Red,
    Blue,
    Green
}
相当于

enum Color : int 
{
    Red = 0,
    Blue = 1,
    Green = 2
}
类实例,例如
newperson(“Jack”)
不是常量,并且作为枚举成员或值无效

除了尝试这样做的有效性之外,我不确定您希望如何使用它。您是否希望能够访问
TestEnum.Jack
并检索您的
个人(“Jack”)
实例?如果是这样,您可以使用一个具有静态只读属性且提供了正确默认值的类来完成类似的工作

public static class People {
    public static Person Jack {get;} = new Person("Jack");
    public static Person John {get;} = new Person("John");
}
现在,您可以使用
People.John
People.Jack
获取person实例。
如果
Person
类是可变的,尽管这些属性是只读的,这可能会导致问题。

这根本不可能。您可能应该使用一个类来保存实例。
…我遇到了以字符串作为值的枚举
这些不是字符串-它们是常量您发布的内容没有意义,也不会编译。如果你解释了你试图用它来完成什么,我们可能会帮助你。文档说不:“枚举是一组命名常量,其基本类型是任何整数类型…”如果你想将
int
映射到
,你可以使用
字典