Помощь - Поиск - Пользователи - Календарь
Полная версия: C# конструкторы классов
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
klem4
    public class Point
{
private int row;
private int col;
private char value;

public Point(int row, int col, char value)
{
this.row = row;
this.col = col;
this.value = value;
}

public Point(Point p)
{
Point(p.row, p.col, p.value); // можно ли как-то добиться работы такого кода ?
}
}
volvo
Ничего кроме
        public Point(Point p): this(p.row, p.col, p.value)
{
}

в голову не приходит...
klem4
Отлично, спасибо.
hardcase
А зачем определять у класса конструктор копирования?
Для таких вещей лучше использовать интерфейс IClonable и/или метод MemberwiseClone.
klem4
Цитата
А зачем определять у класса конструктор копирования?


Мне кажется удобно, а чем такой метод плох ? И чем лучше клонирование в таком случае ?
hardcase
Цитата(klem4 @ 14.04.2008 9:17) *
Мне кажется удобно, а чем такой метод плох ? И чем лучше клонирование в таком случае ?
Если добавить какоето внутреннее поле в класс, то придется вносить дополнительные действия в "конструктор копирования". В этом плане лучше использовать защищенный MemberwiseClone метод - CLR сама скопирует все поля.

Кроме того, с помощью отражения можно написать код, позволяющий относительно безопасно копировать любые объекты (т.е. конструкторы копирования не нужны). Пример.
klem4
Спасибо, будем посмотреть.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.