C#语言枚举声明

时间:2011-09-21 09:42:59

标签: c# dll

嗨有没有办法声明枚举或自定义声明在C#中返回对象的枚举的方式?

private enum testEnum
{ 
    firstname =1 
    ,lastname = 2
} 

如果我们想要返回名称而不是1和2? 像testEnum.firstname返回1。

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

6 个答案:

答案 0 :(得分:1)

http://msdn.microsoft.com/de-de/library/system.enum.aspx

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

答案 1 :(得分:1)

您可以使用以下接口:

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();
};

答案 2 :(得分:1)

你可以这样做:

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; }
}

这足够接近吗?

答案 3 :(得分:0)

The docs州:

  

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

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

答案 4 :(得分:0)

我认为这只适用于java。

似乎你想要以Joshua Bloch的方式实现单身。

答案 5 :(得分:0)

我猜你是一个暴露静态字段的类,它可以是你想要的任何类型。