Композиция и агрегация — это два типа отношений между объектами в объектно-ориентированном программировании.
➡️ Композиция — это сильная связь, при которой один объект владеет другим и отвечает за его жизненный цикл. Если контейнерный объект уничтожается, то и содержащийся объект тоже уничтожается. Пример: класс "Автомобиль" и класс "Двигатель".
➡️ Агрегация — это более слабая связь, где объект может существовать независимо от контейнера. Пример: класс "Университет" и класс "Студент". Студент может существовать вне университета.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ С# собеседования
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2
async
и await
— ключевые слова, которые упрощают работу с асинхронным программированием. async
используется для обозначения метода как асинхронного, что позволяет выполнять операции без блокировки основного потока. Такой метод возвращает Task
или Task<T>
. await
применяется внутри асинхронного метода для приостановки выполнения до завершения асинхронной операции. Это позволяет писать асинхронный код, который выглядит как синхронный, улучшая читаемость и поддерживаемость.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1🤔1
public class Person
{
public required string Name { get; init; }
public int Age { get; init; }
}
// Использование
var person = new Person { Name = "Alice", Age = 30 }; // Корректно
var personWithoutName = new Person { Age = 25 }; // Ошибка: Name обязателен
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥4
Для сериализации и десериализации объектов в C# используется пространство имен
🔘 Сериализация: создается объект
🔘 Десериализация: используется метод
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ С# собеседования
System.Runtime.Serialization
. Один из популярных способов — использование DataContractSerializer
.DataContractSerializer
, которому передается тип объекта. Затем вызывается метод WriteObject
, который записывает объект в поток.ReadObject
, который считывает объект из потока.using System.Runtime.Serialization;
using System.IO;
[DataContract]
class Person
{
[DataMember]
public string Name { get; set; }
}
var person = new Person { Name = "John" };
var serializer = new DataContractSerializer(typeof(Person));
using (var stream = new FileStream("person.xml", FileMode.Create))
{
serializer.WriteObject(stream, person);
}
using (var stream = new FileStream("person.xml", FileMode.Open))
{
var deserializedPerson = (Person)serializer.ReadObject(stream);
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3
Object
является фундаментальной концепцией, поскольку все классы неявно наследуются от Object
, даже если это не указано явно. Это означает, что каждый класс автоматически получает набор методов, определённых в Object
, таких как ToString()
, Equals()
, GetHashCode()
и GetType()
.ToString()
возвращает строковое представление объекта, что полезно для отладки и логирования. Equals()
позволяет сравнивать объекты на равенство, а GetHashCode()
возвращает числовое значение, используемое в хеш-таблицах. GetType()
предоставляет информацию о типе объекта во время выполнения.Object
обеспечивает базовую функциональность и полиморфизм, позволяя использовать объекты разных типов в унифицированной манере. Это также упрощает работу с коллекциями, такими как ArrayList
, которые могут хранить объекты любого типа.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1
static
используется для объявления членов класса, которые принадлежат самому классу, а не его экземплярам. Такие методы и свойства можно вызывать без создания объекта класса. Например:public static class MathUtilities
{
public static int Add(int a, int b)
{
return a + b;
}
}
readonly
применяется для полей, значения которых могут быть установлены только один раз — либо при объявлении, либо в конструкторе класса. Это обеспечивает неизменяемость данных после инициализации. Пример:public class Configuration
{
public readonly string ConnectionString;
public Configuration(string connectionString)
{
ConnectionString = connectionString;
}
}
Использование
static
и readonly
помогает создавать более предсказуемый и безопасный код, улучшая его читаемость и поддержку.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤1
Слабые ссылки (Weak References) позволяют ссылаться на объекты, не препятствуя их сборке мусора. Это полезно, когда необходимо отслеживать объект, но не удерживать его в памяти, если он больше не используется.
🟢 Слабая ссылка создается с помощью класса
🟢 Чтобы получить объект, нужно проверить его доступность:
Если объект был собран,
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ С# собеседования
WeakReference
. Например:WeakReference weakRef = new WeakReference(someObject);
if (weakRef.IsAlive)
{
var obj = weakRef.Target;
}
Если объект был собран,
weakRef.Target
вернет null
. Слабые ссылки помогают управлять памятью, избегая утечек.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥1
// Создание делегата с анонимным методом
Action<int> printSquare = delegate(int x)
{
// Вывод квадрата числа
Console.WriteLine(x * x);
};
// Вызов анонимного метода
printSquare(5); // Вывод: 25
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8✍1
public class WeakEventSource<TEventArgs> where TEventArgs : EventArgs {
private readonly List<WeakReference<EventHandler<TEventArgs>>> handlers = new();
public void Subscribe(EventHandler<TEventArgs> handler) {
handlers.Add(new WeakReference<EventHandler<TEventArgs>>(handler));
}
public void Raise(object sender, TEventArgs e) {
handlers.RemoveAll(h => !h.TryGetTarget(out _));
foreach (var weakHandler in handlers) {
if (weakHandler.TryGetTarget(out var handler)) {
handler(sender, e);
}
}
}
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2
C# собеседования pinned «ℹ️ Подписывайся на наши новые каналы! 🖥 JS собеседования 🖥 Backend собеседования»
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍3
Интерфейс
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ С# собеседования
IDisposable
используется для освобождения неуправляемых ресурсов, таких как файлы, сетевые соединения и другие ресурсы, которые требуют явного освобождения. Реализация IDisposable
включает метод Dispose
, который освобождает ресурсы.public class ResourceHolder : IDisposable
{
private bool disposed = false;
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
// Освобождение управляемых ресурсов
}
// Освобождение неуправляемых ресурсов
disposed = true;
}
}
~ResourceHolder()
{
Dispose(false);
}
}
IDisposable
позволяет управлять ресурсами, предотвращая утечки памяти.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤2
Класс
1⃣
2⃣
3⃣
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ С# собеседования
Parallel
из пространства имен System.Threading.Tasks
упрощает многопоточность, позволяя выполнять циклы и вызовы методов параллельно.Parallel.For
используется для параллельного выполнения цикла for
. Он автоматически распределяет итерации между потоками.Parallel.For(0, 10, i => {
Console.WriteLine($"Processing {i}");
});
Parallel.ForEach
аналогичен, но применяется к коллекциям.var items = new List<int> { 1, 2, 3, 4, 5 };
Parallel.ForEach(items, item => {
Console.WriteLine($"Processing {item}");
});
Parallel.Invoke
позволяет выполнять несколько действий одновременно.Parallel.Invoke(
() => Console.WriteLine("Task 1"),
() => Console.WriteLine("Task 2")
);
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥1
public class Animal
{
public virtual void Speak()
{
// Базовая реализация
Console.WriteLine("Animal speaks");
}
}
public class Dog : Animal
{
public override void Speak()
{
// Переопределение метода
Console.WriteLine("Dog barks");
}
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14💯1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥3🤔1
CLR (Common Language Runtime) — это виртуальная машина, являющаяся частью .NET Framework, которая управляет выполнением программ, написанных на языках, поддерживающих .NET, таких как C#. Основные функции CLR включают:
1️⃣ Управление памятью: автоматическое управление памятью через сборку мусора.
2️⃣ Обеспечение безопасности: проверка типов и защита кода.
3️⃣ Обработка исключений: централизованная обработка ошибок.
4️⃣ Поддержка многопоточности: управление потоками выполнения.
CLR позволяет разрабатывать приложения с высокой производительностью и безопасностью, абстрагируя детали низкоуровневого управления ресурсами.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ С# собеседования
CLR позволяет разрабатывать приложения с высокой производительностью и безопасностью, абстрагируя детали низкоуровневого управления ресурсами.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥1
// Объявление делегата, который принимает два целых числа и возвращает целое число
public delegate int Operation(int x, int y);
// Метод, соответствующий делегату
public int Add(int a, int b)
{
return a + b;
}
// Использование делегата
Operation op = Add;
int result = op(3, 4); // Вызов метода через делегат
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥1
using System;
// Класс Singleton
public class Singleton {
private static Singleton instance;
// Приватный конструктор
private Singleton() {}
// Метод для получения единственного экземпляра
public static Singleton Instance {
get {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
public void ShowMessage() {
Console.WriteLine("Singleton instance");
}
}
class Program {
static void Main() {
Singleton singleton = Singleton.Instance;
singleton.ShowMessage(); // Вывод: Singleton instance
}
}
Singleton
закрыт, чтобы предотвратить создание новых экземпляров. Метод Instance
обеспечивает доступ к единственному экземпляру.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🤔2🤩1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2