所以我有这个结构:
public struct PurchaseOrderStatus {
public const string Open = "Open", Received = "Received";
}
如果我有以下内容,如何转换:
string status = "Open";
要:
PurchaseOrderStatus.Open;
通过转换,我的意思是,我该怎么做:
PurchaseOrderStatus POS;
String status = "Open";
POS = status;
答案 0 :(得分:2)
我建议在这里使用“智能枚举”:
public sealed class PurchaseOrderStatus
{
public static readonly PurchaseOrderStatus Open =
new PurchaseOrderStatus("Open");
public static readonly PurchaseOrderStatus Received =
new PurchaseOrderStatus("Received");
private readonly string text;
public string Text { get { return value; } }
private PurchaseOrderStatus(string text)
{
this.text = text;
}
}
您可以在此处存储任意信息,包括不是有效标识符的文本(当然,只要它不会更改)。它仍然是强类型的(与你的字符串不同),你可以给它其他行为。如果删除sealed
修饰符并将子类添加为嵌套类,则甚至可以创建子类,这样它们仍然可以访问私有构造函数。
哦,并且有一组真正有限的值(您定义的值和null
)与常规枚举不同。
唯一的缺点是你无法开启它。