我有這樣一個類:我該如何做到這一點,所以我的類變量只能設置爲三種選擇之一?
public class Meta
{
public string Height { get; set; }
}
我想有些東西添加到類,但我不知道該怎麼做。我想要的是隻能將高度設置爲「高」或「短」。也許在未來會有更多的事情,但現在這將是兩者之間的選擇。另外我希望它在構造函數中默認爲「Short」。我想我會需要使用枚舉,但我不知道如何 做到這一點。
有人可以解釋。我非常感謝。
我有這樣一個類:我該如何做到這一點,所以我的類變量只能設置爲三種選擇之一?
public class Meta
{
public string Height { get; set; }
}
我想有些東西添加到類,但我不知道該怎麼做。我想要的是隻能將高度設置爲「高」或「短」。也許在未來會有更多的事情,但現在這將是兩者之間的選擇。另外我希望它在構造函數中默認爲「Short」。我想我會需要使用枚舉,但我不知道如何 做到這一點。
有人可以解釋。我非常感謝。
您可以定義與可能值的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; }
}
現在,當你有元類的一個實例您可以將Height屬性設置爲Tall或Short:
var meta = new Meta();
meta.Height = HeightTypes.Tall;
小問題(主要針對OP):enum值不會自動驗證;你可以指定既不高也不短的其他值 –
是的,你可以使用一個枚舉:
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;
}
}
(如果您希望屬性是可寫的,你需要把驗證的制定者。)
您需要驗證,因爲枚舉其實只是不同類型的整數值。例如,如果沒有驗證,這將繼續罰款:
new Meta((Height) 1000);
但它顯然對任何呼叫者沒有意義。
定義一個枚舉。
public Enum Heights
{
Tall,
Short
}
,然後定義你的屬性爲枚舉類型
public Heights Height { get; set; }
看到http://msdn.microsoft.com/en-us/library/system.enum.aspx更多信息
你什麼是枚舉在C#是什麼?如果不是請在這[文章](http://msdn.microsoft.com/en-us/library/sbbt4032(v = VS.100).aspx) – guyl