IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> C# конструкторы классов
klem4
сообщение 13.04.2008 20:32
Сообщение #1


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


    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); // можно ли как-то добиться работы такого кода ?
        }
    }


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 6)
volvo
сообщение 13.04.2008 20:41
Сообщение #2


Гость






Ничего кроме
        public Point(Point p): this(p.row, p.col, p.value)
        {
        }

в голову не приходит...
 К началу страницы 
+ Ответить 
klem4
сообщение 13.04.2008 20:46
Сообщение #3


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Отлично, спасибо.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hardcase
сообщение 13.04.2008 21:45
Сообщение #4


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


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


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 14.04.2008 8:17
Сообщение #5


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Цитата
А зачем определять у класса конструктор копирования?


Мне кажется удобно, а чем такой метод плох ? И чем лучше клонирование в таком случае ?


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hardcase
сообщение 14.04.2008 9:41
Сообщение #6


code warrior
****

Группа: Пользователи
Сообщений: 484
Пол: Мужской
Реальное имя: Славен

Репутация: -  8  +


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

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

Сообщение отредактировано: hardcase - 14.04.2008 9:43


--------------------
ИзВ ин ИтЕ зА нЕ рОв НЫй П оч ЕРк
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 17.04.2008 8:49
Сообщение #7


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Спасибо, будем посмотреть.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 28.07.2025 10:42
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"