powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Может кто пояснить код...
17 сообщений из 17, страница 1 из 1
Может кто пояснить код...
    #39960553
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем форумчанам доброго времени суток!
На работе столкнулся с рабочим кодом смысл которого понять никак не могу, может кто пояснит, буду крайне признателен.
Да, и вот еще что, по понятным причинам привожу псевдокод, но суть от этого не меняется...
Все это на C#

вариант 1

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
public class classnameA
{
       public classnameA()
       {
          var x = xxx;
          var y = yyy;
          var z = zzz;
          .....
       }

       public classnameA(classnameA xxx): this()
       {
          var x = xxx.x;
          var y = xxx.y;
          var z = xxx.z;
          .....
       }      

       ....
       ....
      // дальнейший код вопросов не вызывает


}



вариант 2

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
public class classnameA
{
       public classnameA()
       {
          var x = xxx;
          var y = yyy;
          var z = zzz;
          .....
       }

       public classnameA(classnameA xxx)
       {
          var x = xxx.x;
          var y = xxx.y;
          var z = xxx.z;
          .....
       }      

       ....
       ....
      // дальнейший код вопросов не вызывает


}



заранее благодарен
...
Рейтинг: 0 / 0
Может кто пояснить код...
    #39960554
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поясняю. Это говнокод, который не скомпилируется Если серьезно, то var там везде явно вставлен по ошибке. x,y,z это должны быть приватные поля, тогда первый конструктор это просто конструктор с инициализацией этих полей, а второй конструктор это "копирующий" конструтор для создания копии существующего инстанса.

Модератор: Тема перенесена из форума "Программирование".
...
Рейтинг: 0 / 0
Может кто пояснить код...
    #39960555
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это вполне рабочий код. Смысл которого понять не могу. Потому и попросил помощи.
...
Рейтинг: 0 / 0
Может кто пояснить код...
    #39960556
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnix
Это вполне рабочий код. Смысл которого понять не могу. Потому и попросил помощи.

x, y, x это public поля
...
Рейтинг: 0 / 0
Может кто пояснить код...
    #39960557
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

а зачем так сделано?
...
Рейтинг: 0 / 0
Может кто пояснить код...
    #39960558
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще, если реализуешь копирование обьекта, то стоит добавить еще интерфейс ICloneable.
...
Рейтинг: 0 / 0
Может кто пояснить код...
    #39960559
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ICloneable там нет
...
Рейтинг: 0 / 0
Может кто пояснить код...
    #39960566
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x, y, z вообще локальные переменные и если они unused, то это говно код и не более
...
Рейтинг: 0 / 0
Может кто пояснить код...
    #39960569
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnix,

Это типа конструктор, чтобы можно было создать новый объект classnameA имея существующий.
Ну и чо?
...
Рейтинг: 0 / 0
Может кто пояснить код...
    #39960570
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnix
x, y, x это public поля

Ну тогда надо предать всех, кто это писал, анафеме, замучить и сжечь на костре. А потом оштрафовать на премию, уволить и заставить всё переписать как надо.
...
Рейтинг: 0 / 0
Может кто пояснить код...
    #39960571
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, я это и сам понимаю, но мне нужно понять для чего это было так сделано...
Перерыл книги, нигде такого нет.
...
Рейтинг: 0 / 0
Может кто пояснить код...
    #39960573
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно хотели иммутабельные классы когда-то. Или что-то типа того. Но всё пошло наперекосяк...
...
Рейтинг: 0 / 0
Может кто пояснить код...
    #39960574
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,

ну да, может быть...
...
Рейтинг: 0 / 0
Может кто пояснить код...
    #39960575
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,

Другими словами это извращенный аналог конструктора копирования С++
Пасиб...
...
Рейтинг: 0 / 0
Может кто пояснить код...
    #39960576
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

Пасиб... все вроде понятно...
...
Рейтинг: 0 / 0
Может кто пояснить код...
    #39960596
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lnix
crutchmaster,

Другими словами это извращенный аналог конструктора копирования С++
Пасиб...

Почему же "извращенный". Обычный ctor копирования. За паблик поля, конечно же, надо руки отрывать. Вообще, как правило, наличие возможности копировать объект подразумевает value-like поведение, а, заначит, кроме того, надо такой класс метить как sealed и, как уже указали, делать полностью immutable.
...
Рейтинг: 0 / 0
Может кто пояснить код...
    #39960629
lnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,

вот от этого меня и переклинило, никак не мог понять чего тут не так
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Может кто пояснить код...
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]