次のように、実行時にチェックして例外をスローできます。
if (grade < 2.00 || grade > 6.00)
throw new ArgumentOutOfRangeException("grade");
このような条件は、常にメソッドまたはコンストラクターの先頭に置きます。私はそれらを独自のものにしました#region
(しかし、それは私の個人的な好みです):
public Student(string firstName, string lastName, double grade)
: base(firstName, lastName)
{
#region Contract
if (grade < 2.00 || grade > 6.00)
throw new ArgumentOutOfRangeException("grade");
#endregion
this.FirstName = firstName;
this.LastName = lastName;
this.Grade = grade;
}
ただし、コード コントラクトを使用して、そのようなことに対してコンパイル時の警告を取得する方法があります。Code Contracts は MSDNからダウンロードでき、ドキュメントもそこにあります。Visual Studio の非 Express バージョンとのみ統合され、Microsoft によって作成されます。メソッド呼び出しが指定したコントラクトに準拠する可能性があるかどうかを確認します。コードは次のようになります。
using System.Diagnotistics.Contracts;
public Student(string firstName, string lastName, double grade)
: base(firstName, lastName)
{
#region Contract
Contract.Requires<ArgumentOutOfRangeException>(grade >= 2.00);
Contract.Requires<ArgumentOutOfRangeException>(grade <= 6.00);
#endregion
this.FirstName = firstName;
this.LastName = lastName;
this.Grade = grade;
}