C# C语言枚举声明

C# C语言枚举声明,c#,dll,C#,Dll,嗨,有没有一种方法可以声明一个枚举,或者自定义声明一个以C#返回对象的枚举的方法 如果我们想返回名称而不是1和2? 与testEnum类似,firstname返回1 我想声明一个枚举来返回Java中的对象。可能吗?说明: 每个枚举类型都有一个基础类型,它可以是除char之外的任何整数类型 假设您的意思是对象为复杂/引用类型。那么您的问题的答案是否定的。您可以始终使用包含引用类型的命名属性创建一个类。我认为这只有在java中才可能 似乎您希望以Joshua Bloch的方式实现单例。 枚举是一组命

嗨,有没有一种方法可以声明一个枚举,或者自定义声明一个以C#返回对象的枚举的方法

如果我们想返回名称而不是1和2? 与testEnum类似,firstname返回1

我想声明一个枚举来返回Java中的对象。可能吗?

说明:

每个枚举类型都有一个基础类型,它可以是除char之外的任何整数类型


假设您的意思是
对象
为复杂/引用类型。那么您的问题的答案是否定的。您可以始终使用包含引用类型的命名属性创建一个类。

我认为这只有在java中才可能

似乎您希望以Joshua Bloch的方式实现单例。


枚举是一组命名常量,其基础类型是除Char之外的任何整数类型。如果没有显式声明基础类型,则使用Int32。Enum是.NET Framework中所有枚举的基类。

我想您可能是一个公开静态字段的类,该字段可以是您想要的任何类型。

您可以为此使用接口:

interface IColorEnum {};

class ColorEnum: IColorEnum
{
    public static const Red = new ColorEnum();
    public static const Green = new ColorEnum();
    public static const Blue = new ColorEnum();
};
像往常一样使用它:

void foo(IColorEnum color)
{
    if(color == ColorEnum.Red) {...}
}
更新+改进:您甚至可以删除接口,只需使用带有两个此类类型的公共静态字段和私有构造函数的类,以防止创建新实例:

class ColorEnum
{
    private ColorEnum() {};
    public static const Red = new ColorEnum();
    public static const Green = new ColorEnum();
    public static const Blue = new ColorEnum();
};
您可以这样做:

public class NameEnum
{
    static NameEnum()
    {
        FirstName = new NameEnum("FirstName");
        LastName = new NameEnum("LastName");
    }

    public static NameEnum FirstName { get; private set; }
    public static NameEnum LastName { get; private set; }

    private NameEnum(string name)
    {
        this.Name = name;
    }

    public string Name { get; private set; }
}

这足够接近了吗?

你能展示你有什么或者你想做什么的伪代码吗?私有枚举testEnum{firstname=1,lastname=2}以及我们是否想返回名称而不是1和2?与testEnum类似,firstname返回1。我想声明一个枚举来返回Java中的对象。有可能吗?所以您试图将枚举装箱到引用类型中,是吗?
public class NameEnum
{
    static NameEnum()
    {
        FirstName = new NameEnum("FirstName");
        LastName = new NameEnum("LastName");
    }

    public static NameEnum FirstName { get; private set; }
    public static NameEnum LastName { get; private set; }

    private NameEnum(string name)
    {
        this.Name = name;
    }

    public string Name { get; private set; }
}