0

所以我有这个结构:

public struct PurchaseOrderStatus {
    public const string Open = "Open", Received = "Received";
}

如果我有以下情况,我该如何转换:

    string status = "Open";

至:

    PurchaseOrderStatus.Open;

通过转换,我的意思是,我该怎么做:

    PurchaseOrderStatus POS;
    String status = "Open";
    POS = status;
4

1 回答 1

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

唯一的缺点是你不能打开它。

于 2012-07-23T16:22:20.750 回答