Например, если я отправляю объект в другую форму, т.е.:
Код: Выделить всё
SomeForm myForm = new SomeForm();
SomeObject myObject = new SomeObject();
myForm.formObject = myObject;
Код: Выделить всё
SomeObject myObject = new SomeObject();
SomeObject anotherObject = new SomeObject();
anotherObject = myObject;
Самый неприятный случай — когда я пытаюсь клонировать один из определенных мной объектов:
Код: Выделить всё
public class SomeObject
{
double value1, value2;
//default constructor here
public SomeObject(val1, val2)
{
value1 = val1;
value2 = val2;
}
public void Clone(SomeObject thingToCopy)
{
this.value1 = thingToCopy.value1;
this.value2 = thingToCopy.value2;
}
}
Код: Выделить всё
SomeObject obj1 = new SomeObject(1, 2);
SomeObject obj2 = new SomeObject();
obj2.Clone(obj1);
Код: Выделить всё
obj1На
Системные объекты, такие как int, double, string и т. д., кажется, всегда копируются, за исключением случая клонирования, описанного выше.
Мой вопрос заключается в том, что не принимая во внимание использование ref ключевое слово в функциях, когда объект копируется и когда на объект ссылаются в каждом случае (т.е. при переходе к функциям, при установке в качестве других объектов (как в первых двух примерах выше), при копировании переменных-членов, таких как третий пример и т. д.)?
Подробнее здесь: https://stackoverflow.com/questions/434 ... nce-copied