powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / операция присвоения
9 сообщений из 9, страница 1 из 1
операция присвоения
    #32781634
Василий Д.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть такой текст
public class MyClass {...}
...
MyClass a=new MyClass();
MyClass b=new MyClass();
a=b;

как можно переопределить опрецию присвоения, чтобы копировались значения переменных? По умолчанию, а присваивается ссылка на b.

P.S. Вариант описать struct MyClass ... не подходти.
...
Рейтинг: 0 / 0
операция присвоения
    #32781653
vooo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть Clone()???
...
Рейтинг: 0 / 0
операция присвоения
    #32781665
Василий Д.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда и посать нужно a=b.Clone(),
а хотелось бы a=b;
...
Рейтинг: 0 / 0
операция присвоения
    #32781713
vooo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда и посать нужно a=b.Clone(),
а хотелось бы a=b;

Дело не в запси :-)
Дело в том, что интерфейс ICloneable выполняет необходимое побитовое копирование для ссылочного класса (в отличии от структуры)
Просто надо реализвать в классе необходимый интерфейс

Либо (по моему в C# это можно реализовать - хотя спорить не буду , аналогично Си) - перегрузить для класса оператор присвоения
...
Рейтинг: 0 / 0
операция присвоения
    #32781718
Valera-x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Операторы: =, ., ?:, ->, new, is, sizeof, typeof не могут быть перегружены.
Overloadable Operators
...
Рейтинг: 0 / 0
операция присвоения
    #32781758
Василий Д.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторДело в том, что интерфейс ICloneable выполняет необходимое побитовое копирование для ссылочного класса (в отличии от структуры)

непрохляло,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class MyClass:IClonable
{
   public int a;
   MyClass(int aa){a=aa;}
  object Clone(){return new MyClass(a);}
}
...
b.a=1;
a=b;
b.a=5;
всеравно a.a==b.a==5
...
Рейтинг: 0 / 0
операция присвоения
    #32781827
vooo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
public class MyClass:IClonable
{
public int a;
MyClass(int aa){a=aa;}
object Clone(){return new MyClass(a);}
}
...


public class MyClass:IClonable
{
public int a;
public MyClass(){}
public MyClass(int aa){a=aa;}
public object Clone()
{
return new MyClass(this.a);
}
}

main()
{
Myclass cl1=new MyClass(1);
MyClass cl2=(MyClass)cl1.Clone();
cl2.a=100; //при этом cl1.a дб равно 1

}
...
Рейтинг: 0 / 0
операция присвоения
    #32781842
Василий Д.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторMyClass cl2=(MyClass)cl1.Clone();
cl2.a=100; //при этом cl1.a дб равно 1

а так чтобы
написать cl2=cl1 - инкак нельзя?
...
Рейтинг: 0 / 0
операция присвоения
    #32783147
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде надо ICloneable писать а не IClonable.... Вставляй пжлста реальный код.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / операция присвоения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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