Реализация передачи параметров по ссылкам - C#
Формулировка задачи:
Добрый день, не могу что-то понять реализацию передачи параметров по ссылкам, есть класс А, он работает допустим с MySQL соответственно у него есть свойство MySQL, ну за сам объект MySQL отвечает другой класс Б в котором то же соответственно есть свойство MySQL, так вот, каким образом сделать взаимодействие этих двух свойств? по идеи нужно что бы свойство MySQL класса А было как бы ссылкой на свойство MySQL класса Б, через ref сделать не удалось, так как передачу параметров ref через метод класса A SetMysql(ref MySql Mysql) работает, но в данный момент у класса Б свойство Mysql которое передается является в данный момент NULL, и инициаллизируется позже...
Решение задачи: «Реализация передачи параметров по ссылкам»
textual
Листинг программы
using System; using System.IO; namespace ConsApp_RefOut { class Program { static void Main(string[] args) { Person person1 = new Person() { Age = 18, Name = "Изначально созданный" }; Console.WriteLine("Вызываем метод: GetPersonWithoutRefOrOut"); //Созданный объект внутри метода "так и останется внутри метода" GetPersonWithoutRefOrOut(person1); Console.WriteLine("Результат его работы:"); Console.WriteLine(person1); Console.WriteLine("Как видно созданный объект внутри метода не передался" + " за его пределы, так как на него ссылалась копия ссылки Person\n"); Person person2; GetPersonRef(ref person1); //передаём уже проинициализированную ссылку GetPersonOut(out person2); //передаём НЕ проинициализированную ссылку Console.WriteLine(person1); Console.WriteLine(person2); string text; //нет смысла инициализировать, только для передачи в метод if (TryReadText(out text, "Бла-бла-бла")) Console.WriteLine(Environment.NewLine + text); else Console.WriteLine(Environment.NewLine + "Текст не удалось прочитать"); Console.ReadKey(); } public static bool TryReadText(out string text, string filePath) { if (File.Exists(filePath)) { text = File.ReadAllText(filePath); return true; } text = string.Empty; return false; } //передаётся копия ссылки Person public static void GetPersonWithoutRefOrOut(Person person) { person = new Person { Age = 90, Name = "Из метода GetPersonWithoutRefOrOut" }; } //передаётся ссылка по ссылке, но передаваемая ссылка //должна быть инициализирована хотя бы null public static void GetPersonRef(ref Person person) { person = new Person { Age = 20, Name = "Из метода ref" }; } //передаётся ссылка по ссылке, но передаваемая ссылка //может быть не инициализирована public static void GetPersonOut(out Person person) { person = new Person { Age = 30, Name = "Из метода out" }; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д