如何在struct中将字符串转换为字符串常量?

时间:2012-07-23 16:10:55

标签: c#

所以我有这个结构:

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

如果我有以下内容,如何转换:

    string status = "Open";

要:

    PurchaseOrderStatus.Open;

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

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

1 个答案:

答案 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)与常规枚举不同。

唯一的缺点是你无法开启它。