Вот мой кодКак проверить входные данные для перегруженных конструкторов?
public class MyClass
{
int LeftPoints;
int RightPoints;
public MyClass(int points)
: this (points, points)
{
if (points < 0)
throw new ArgumentOutOfRangeException("points must be positive");
}
public MyClass(int leftPoints, int rightPoints)
{
if (leftPoints < 0)
throw new ArgumentOutOfRangeException("leftPoints must be positive");
if (rightPoints < 0)
throw new ArgumentOutOfRangeException("rightPoints must be positive");
}
}
Очевидно, что если я позвоню new MyClass(-1)
он бросает сообщение «leftPoints должен быть положительным».
Можно перегрузить первый конструктор с помощью : this (points, points)
и по-прежнему получить «правильную» проверку?
Вы можете компилировать оба исключения вместе, то бросить [AggregateException] (http://msdn.microsoft.com/ en-us/library/system.aggregateexception (v = vs.110) .aspx) – paqogomez
Почему вы не используете неподписанные int 'public MyClass (uint points)', тогда он будет только положительным в любом случае – OJay