嗨有没有办法来声明一个枚举或自定义的方式来声明返回在C#中的对象的枚举?C#语言枚举声明
private enum testEnum
{
firstname =1
,lastname = 2
}
如果我们想返回名称而不是1和2? 像testEnum.firstname返回1。
我想声明一个枚举返回像Java一样的对象。可能吗?
嗨有没有办法来声明一个枚举或自定义的方式来声明返回在C#中的对象的枚举?C#语言枚举声明
private enum 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; }
}
那是足够接近?
The docs状态:
每个枚举类型都有一个基本类型,其可以是除炭任何整数类型。
假设您的意思是object
是复杂/参考类型。那么你的问题的答案是否定的。您始终可以使用包含引用类型的命名属性创建一个类。
http://msdn.microsoft.com/de-de/library/system.enum.aspx
枚举是一组命名的常数,其基本类型是除字符任何整数类型。如果没有显式声明基础类型,则使用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();
};
你能告诉你有什么或者你想要做的伪代码吗? –
private enum testEnum {firstname = 1,lastname = 2}如果我们想返回名称而不是1和2?像testEnum.firstname返回1。我想声明一个枚举来返回像Java一样的对象。可能吗? – Kalanamith
所以你试图把一个枚举放入一个引用类型中,是吗? – jv42