Передача ссылки по ссылке (ref) - C#
Формулировка задачи:
Вопрос тут такого себе индивидуального характера.
Встретился с этим впервые.
Подскажите, почему метод Named, работает только тогда когда я значения в его вызов в мэйне передаю через оператор ref? Все было бы понятно, если бы значения было значимым типом. Но ведь стринг, это же ссылочный тип, так почему тогда в методе Неймед, значения переменной а не изменилось?
Возможно, я что-то не так понял, когда проходил эту тему и теперь еще больше запутался. Исправьте если я не правильно нарисовал.
static void Main(string[] args)
static void Main(string[] args)
{
string a = "";
Named(ref a);
Console.WriteLine(a);
Console.ReadLine();
}
public static void Named(ref string a)
{
a = "hello!";
}Решение задачи: «Передача ссылки по ссылке (ref)»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication5 {
class Program {
static void Main(string[] args) {
string s1 = "Hello";
string s2 = "";
Console.WriteLine(s1 == s2); //Тут мы ожидаем False, и так и есть
Console.WriteLine(object.ReferenceEquals(s1, s2)); //Тут тоже ожидаем False, и тоже все верно
Console.WriteLine();
s2 += "Hello";
Console.WriteLine(s1 == s2); //Тут ожидаем True, и опять совпадает
Console.WriteLine(object.ReferenceEquals(s1, s2));//Тут ожидаем False, так как ссылки вроде разные... Однако, не все так просто...
Console.ReadLine();
}
}
}