Constructor chaining
От: QrystaL Украина  
Дата: 12.10.10 10:09
Оценка:
Кто как пишет и почему?

Вариант 1:
    public class Exception1 : Exception
    {
        public Exception1()
        {
        }

        public Exception1(String message)
            : base(message)
        {
        }

        public Exception1(String message, Exception innerException)
            : base(message, innerException)
        {
        }
    }


Вариант 2:
public class Exception2 : Exception
    {
        public Exception2()
            : this(String.Empty)
        {
        }

        public Exception2(String message)
            : this(message, null)
        {
        }

        public Exception2(String message, Exception innerException)
            : base(message, innerException)
        {
        }
    }


Вариант 3
???
Re: Constructor chaining
От: _FRED_ Черногория
Дата: 12.10.10 10:12
Оценка: +1
Здравствуйте, QrystaL, Вы писали:

QL>Кто как пишет и почему?


QL>Вариант 3

QL>???

По-разному, в зависимотси от того, как происходит инициализация объекта, от того, что (какой код) должно быть в конструкторах. Иногда удобнее одно, иногда второе, иногда третье или четвёртое.
Help will always be given at Hogwarts to those who ask for it.
Re: Constructor chaining
От: Sinix  
Дата: 12.10.10 10:46
Оценка: 6 (1)
Здравствуйте, QrystaL, Вы писали:

В поддержку к ответу _FRED_
Если нет особых оснований — вариант 2. Принцип тот же, что и с перегрузками методов: все перегрузки должны делать одно и то же.

* исключение: если у нас data-класс или структура, и мы следуем рекомендации (см вторую ссылку)

Do use constructor parameters as shortcuts for setting main properties.

То, разумеется, код в конструкторе будет разным.

Оф. гадлайны:
http://msdn.microsoft.com/en-us/library/3f80506d(VS.71).aspx
http://msdn.microsoft.com/en-us/library/ms229060.aspx
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.