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

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

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

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

Либо (по моему в C# это можно реализовать - хотя спорить не буду , аналогично Си) - перегрузить для класса оператор присвоения
...
Рейтинг: 0 / 0
15.11.2004, 10:42
    #32781718
Valera-x
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
операция присвоения
Операторы: =, ., ?:, ->, new, is, sizeof, typeof не могут быть перегружены.
Overloadable Operators
...
Рейтинг: 0 / 0
15.11.2004, 10:57
    #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
15.11.2004, 11:23
    #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
15.11.2004, 11:28
    #32781842
Василий Д.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
операция присвоения
авторMyClass cl2=(MyClass)cl1.Clone();
cl2.a=100; //при этом cl1.a дб равно 1

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


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