Re: Offtopic
От: NataljaNeumann  
Дата: 17.10.06 22:40
Оценка:
Здравствуйте, Аноним, Вы писали:

А> Можно-ли вызвать конструктор класс из другого конструктора этого же класса?

А> У меня такой код. По договоренности конструкторы не должны принимать null-параметров. Я хочу вызвать из конструктора 'Line(Line obj)' конструктор 'Line(string name, Point AA, Point BB)', но уже после проверки 'object.Equals(obj, null)', как это сделать?

А>
А>    public Line(Line obj) //: this(obj.Name,obj.A, obj.B) - так я и сам могу, но как тогда проверить 'object.Equals(obj, null)'?
А>    {
А>        if (object.Equals(obj, null)) throw new LineException(" Аргумент в конструкторе Line(Line obj) == null");
        
А>//      this(obj.Name,obj.A, obj.B) - ну вот что-то вроде этого !

А>        LName = obj.LName;
А>        A = obj.A;
А>        B = obj.B;
А>    }

А>    public Line(string name, Point AA, Point BB)
А>    {
А>        if (object.Equals(AA, null)) throw new LineException(" Аргумент 2 в конструкторе Line(string name, Point AA, Point BB) == null");
А>        if (object.Equals(BB, null)) throw new LineException(" Аргумент 3 в конструкторе Line(string name, Point AA, Point BB) == null");
А>        if (AA == BB) throw new LineException(" Нельзя построить линию из двух совпадающих точек !", "Точка A:", AA, "Точка B:", BB);

А>        LName = name;
А>        A = AA;
А>        B = BB;
А>    }
А>


Зачем использовать new LineException(" Аргумент 2 в конструкторе Line(string name, Point AA, Point BB) == null");?
Если ты используешь нулевой указатель ты в любом случае получишь NullPointerException! .NET проверяет сам. Второй раз проверять не нужно.

Если эта ситуация просто неправильна используй Assert
System.Diagnosticts.Debug.Assert(AA!=null, " Аргумент 2 в конструкторе Line(string name, Point AA, Point BB) == null");



Мне помнится в Яве другой конструктор может стоять только первой командой. Может в .NETe тоже самое?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.