Сергей
Сергей

си шарп, не пойму почему без ref нельзя присвоить объект объекту в методе? там же ссылка в переменной всё равно

using System;
class RefSwap {
int a, b;
public RefSwap(int i, int j) {
a = i;
b = j;
}
public void show() {
Console.WriteLine("a: {0}, b: {1}", a, b);
}

public void swap(ref RefSwap ob1, ref RefSwap ob2) {
RefSwap t;
t = ob1;
ob1 = ob2; ob2 = t;
}
}
class RefSwapDemo {
public static void Main() {
RefSwap x = new RefSwap(1, 2);
RefSwap y = new RefSwap(3, 4);
Console.Write("x перед вызовом: ");
x.show();
Console.Write("y перед вызовом: ");
y.show();
Console.WriteLine();

x.swap(ref x, ref y);
Console.Write("x после вызова: ");
x.show();
Console.Write("y после вызова: ");
y.show();
Console.ReadKey();
}
}

Ве
Вера

реф - в местах декларирования и вызова - это подсказка ВАМ, что передаваемый таким образом аргумент может поменяться самым экзотическим образом (вплоть до полного исчезновения) .
Синтаксис (правила для написания программ) языка Сшарп требует писать именно так (в обоих местах) , иначе поменять аргумент (в вашем случае - ссылки на объекты) не удастся.
Но менять ВНУТРЕННОСТИ передаваемого объекта вам никто не мешает и без реф.

ЗЫ
Код написан неплохо, только функция свап должна быть статической, так как ничего не меняет в экземпляре, с помощью которого вызывается.

Виктория
Виктория

потому что этот самый ref и представляет собой ссылку

Похожие вопросы
по си шарп, здесь в тексте ошибка?
что это я зделал? си шарп
подскажите по Си шарпу
Вопрос по си шарпу связанный с методами
Си шарп. Как преобразовать переменную типа дабл в инт и наоборот?
почему в си шарп так нельзя? две переменные в цикле фор объявить
почему в си шарп так нельзя? две переменные разных типов в цикле фор объявить?
ни чё не пойму . в си шарп. переполнение почему+
Как присвоить значение char *argv[] переменной и вывести на экран? Си
си шарп всё равно не пойму, почему выводит 11, а не 12. объяснит кто нибудь