Передача ссылки по ссылке (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(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д