嗨有没有办法声明枚举或自定义声明在C#中返回对象的枚举的方式?
private enum testEnum
{
firstname =1
,lastname = 2
}
如果我们想要返回名称而不是1和2? 像testEnum.firstname返回1。
我想声明一个枚举来返回像Java中的对象。有可能吗?
答案 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)
我猜你是一个暴露静态字段的类,它可以是你想要的任何类型。