我正在研究一個名爲PByte的類,它應該表示32和126之間的整數值。(PByte =可打印字節) 現在我想阻止類的用戶錯誤地初始化一個對象,但我不想「不想拋出異常,我只想說的Visual Studio不能編譯,就像它發生在你嘗試這樣做:byte b = 256;
如何讓用戶不正確地初始化一個變量?
sealed class PByte : IEquatable<PByte>, IComparable, IComparable<PByte>
{
public PByte(int value)
{
/* if (value < 32 || value > 126)
throw new ArgumentException("\"" + value + "\" is not a valid PByte-value"); */
this._value = value;
}
[...]
我也實現了這個:
[...]
public static implicit operator PByte(int value)
{
/* if (value < 32 || value > 126)
throw new ArgumentException("\"" + value + "\" is not a valid PByte-value"); */
return new PByte(value);
}
}
所以這也應該是不可能的: PByte p = 2000;
代碼合同可能? http://msdn.microsoft.com/en-us/magazine/ee236408.aspx – asawyer 2012-08-07 18:20:15