如何才能使我的类变量只能设置为三种选择之一?

时间:2011-07-10 11:23:33

标签: c#

我有一个这样的课程:

public class Meta
{
    public string Height { get; set; }
}

我想在课堂上添加一些内容,但我不知道该怎么做。我想要的是高度只能设置为“高”或“短”。未来可能会有更多的事情,但现在只有这两者之间的选择。另外我希望它在构造函数中默认为“Short”。我想我需要使用枚举,但我不知道如何 这样做。

有人可以解释一下。我非常感谢。

3 个答案:

答案 0 :(得分:9)

是的,您可以使用枚举:

public enum Height
{
    Short = 0,
    Tall = 1;
}

public class Meta
{
    public Height Height { get; private set; }

    public Meta(Height height)
    {
        if (!Enum.IsDefined(typeof(Height), height))
        {
            throw new ArgumentOutOfRangeException("No such height");
        }
        this.Height = height;
    }
}

(如果您希望该属性可写,则需要将验证放在setter中。)

您需要验证,因为枚举实际上只是不同类型的整数值。例如,如果没有验证,这将很好地进行:

new Meta((Height) 1000);

但对任何来电者来说显然毫无意义。

答案 1 :(得分:4)

您可以使用可能的值定义enum

public enum HeightTypes
{
    Tall,
    Short
}

然后将其用作Height属性的类型:

public class Meta
{
    public Meta()
    {
        // Set the Height property to Short by default in the constructor
        Height = HeightTypes.Short;
    }
    public HeightTypes Height { get; set; }
}

现在,当你有一个Meta类的实例时,你可以将它的Height属性设置为Tall或Short:

var meta = new Meta();
meta.Height = HeightTypes.Tall;

答案 2 :(得分:2)

定义枚举。

public Enum Heights
{
    Tall,
    Short
}

然后将您的属性定义为enum类型

public Heights Height { get; set; }

请参阅http://msdn.microsoft.com/en-us/library/system.enum.aspx了解详情