C# | Вопросы собесов
5.1K subscribers
35 photos
1 file
984 links
Download Telegram
🤔 Что такое делегаты и зачем они нужны?

Делегаты в C# — это типы, которые представляют собой ссылки на методы с определенной сигнатурой. Делегаты позволяют передавать методы в качестве параметров другим методам, что делает код более гибким и модульным. Делегаты используются для обратных вызовов (callbacks), событий и многопоточности. Они являются основой событийной модели C# и упрощают взаимодействие между объектами.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊1
🤔 Зачем сделали ref & out для ссылочных типов?

В C# ключевые слова ref и out используются для передачи аргументов по ссылке, что позволяет методам изменять значения этих аргументов. Эти механизмы полезны как для значимых типов (структур), так и для ссылочных типов (объектов). Давайте рассмотрим более детально, зачем и как их используют для ссылочных типов.

🚩`ref`

С помощью ref можно передавать ссылочные типы таким образом, чтобы метод мог изменять саму ссылку, то есть ссылаться на другой объект.

🚩`out`

Ключевое слово out позволяет передавать аргумент, который не обязательно должен быть инициализирован до вызова метода. Метод, принимающий out аргумент, обязан присвоить ему значение до завершения работы.

🚩Как используются `ref` и `out`?

Пример использования ref
class Program
{
static void ChangeReference(ref MyClass obj)
{
obj = new MyClass { Value = 20 };
}

static void Main()
{
MyClass myObj = new MyClass { Value = 10 };
ChangeReference(ref myObj);
Console.WriteLine(myObj.Value); // Output: 20
}
}

class MyClass
{
public int Value { get; set; }
}


Пример использования out
class Program
{
static void InitializeObject(out MyClass obj)
{
obj = new MyClass { Value = 30 };
}

static void Main()
{
MyClass myObj;
InitializeObject(out myObj);
Console.WriteLine(myObj.Value); // Output: 30
}
}

class MyClass
{
public int Value { get; set; }
}


🚩Почему это нужно?

🟠Гибкость
ref и out добавляют гибкости при работе с методами, позволяя им изменять ссылки на объекты или создавать и возвращать новые объекты.

🟠Оптимизация
Эти механизмы могут быть полезны для оптимизации, когда необходимо избежать лишнего копирования данных, особенно при работе с большими объектами.

🟠Логика инициализации
out полезен для методов, которые должны вернуть несколько значений или инициализировать объекты, которые не могут быть инициализированы заранее.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM