私はPByteというクラスで作業しています。これは、32から126までのint値を表す必要があります。(PByte = Printable Byte)ここで、クラスのユーザーがオブジェクトを誤って初期化するのを防ぎたいのですが、必要ありません。例外をスローするには、これを実行しようとしたときに発生するように、VisualStudioがコンパイルされないようにします。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;