where в LINQ — это оператор, используемый для фильтрации коллекций на основе заданного условия. Он позволяет выбрать только те элементы, которые удовлетворяют определенному предикату, и исключить остальные из результата.Синтаксис
where в LINQ-запросах напоминает SQL и делает код более читаемым и выразительным. Он может быть использован как в методах расширения, так и в синтаксисе запросов.Пример использования
where в LINQ:
var numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumbers = numbers.Where(n => n % 2 == 0);
В этом примере
where фильтрует список numbers, выбирая только четные числа. Результатом будет коллекция, содержащая числа 2 и 4.Использование
where позволяет эффективно работать с данными, извлекая только нужные элементы из коллекций.Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍5🔥1
  Оператор
using используется для управления ресурсами, которые требуют явного освобождения, такими как файлы, сетевые соединения или объекты, работающие с базами данных. Он гарантирует, что метод Dispose() будет вызван для объекта, реализующего интерфейс IDisposable, как только объект выходит из области видимости.Существует два основных способа использования оператора
using. Первый — это использование в виде инструкции:
using (var resource = new Resource())
{
// Работа с ресурсом
}
В этом случае
Dispose() вызывается автоматически, когда блок using завершается.Второй способ — это использование в виде директивы, которая позволяет импортировать пространство имен:
using System.Text;
Это упрощает доступ к типам в пространстве имен, устраняя необходимость указывать полное имя типа.
Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍7❤2🔥2
  Ключевые слова
virtual и override используются для реализации полиморфизма, позволяя производным классам изменять поведение методов, определённых в базовом классе.Ключевое слово
virtual используется в базовом классе для обозначения метода, который может быть переопределён в производных классах:
public class BaseClass
{
public virtual void Display()
{
Console.WriteLine("Base Display");
}
}
Ключевое слово
override используется в производном классе для переопределения метода, помеченного как virtual в базовом классе:
public class DerivedClass : BaseClass
{
public override void Display()
{
Console.WriteLine("Derived Display");
}
}
При вызове метода
Display через экземпляр DerivedClass, будет выполнена переопределённая версия метода. Это позволяет изменять поведение методов в зависимости от типа объекта.Ставь 👍, если было полезно!
Еще больше ответов для подготовки к собеседованиям на сайте 👈
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍6🔥2💯2
  This и base — ключевые слова, которые используются для работы с объектами и наследованием.this.fieldName позволяет явно указать, что обращение идет к полю класса, а не к локальной переменной.base.MethodName() вызывает метод базового класса, даже если он переопределен в текущем классе.Ставь
Больше ответов на сайте
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍11🔥2
  IDisposable.Конструкция
using автоматически вызывает метод Dispose() для объекта, когда выполнение блока кода завершается, даже если произошло исключение. Это гарантирует освобождение ресурсов своевременно и безопасно.Пример использования:
using (var fileStream = new FileStream("file.txt", FileMode.Open))
{
    // Работа с файлом
}fileStream будет закрыт автоматически после завершения блока using, что предотвращает утечки ресурсов.Ставь
Больше ответов на сайте
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍7❤1
  Please open Telegram to view this post
    VIEW IN TELEGRAM
  ref и out используются для передачи аргументов в методы по ссылке, что позволяет методам изменять значения этих аргументов.void ModifyRef(ref int number) {
    number += 10;
}
int value = 5;
ModifyRef(ref value);
// value теперь равно 15void GetValues(out int x, out int y) {
    x = 10;
    y = 20;
}
int a, b;
GetValues(out a, out b);
// a равно 10, b равно 20Ставь
Больше ответов на сайте
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍8🔥1
  Событие — это механизм, позволяющий объектам уведомлять другие объекты о произошедших действиях. События часто используются в графических интерфейсах для обработки пользовательских действий, таких как нажатия кнопок.
✔️ События объявляются с использованием делегатов. Делегат определяет сигнатуру метода, который будет вызван при возникновении события. 
✔️ Для вызова события используется метод, который проверяет, есть ли подписчики:
Ставь👍 , если было полезно!
Больше ответов на сайте👈 
✈️  С# собеседования
public delegate void EventHandler(object sender, EventArgs e);
public event EventHandler MyEvent;
protected virtual void OnMyEvent(EventArgs e)
{
MyEvent?.Invoke(this, e);
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍7🔥1
  В C# стандартный делегат для обработки событий - EventHandler, который принимает два параметра: object sender (источник события) и EventArgs e (аргументы события).
Пример объявления и использования:
public event EventHandler MyEvent;
private void OnMyEvent()
{
MyEvent?.Invoke(this, EventArgs.Empty);
}
// Подписка на событие
someObject.MyEvent += HandleMyEvent;
private void HandleMyEvent(object sender, EventArgs e)
{
// Обработка события
}
Event Handler позволяет реализовать слабую связность между компонентами и является ключевым элементом событийно-ориентированного программирования.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍5❤1🔥1🤔1
  Композиция и агрегация — это два типа отношений между объектами в объектно-ориентированном программировании.
➡️  Композиция — это сильная связь, при которой один объект владеет другим и отвечает за его жизненный цикл. Если контейнерный объект уничтожается, то и содержащийся объект тоже уничтожается. Пример: класс "Автомобиль" и класс "Двигатель".
➡️  Агрегация — это более слабая связь, где объект может существовать независимо от контейнера. Пример: класс "Университет" и класс "Студент". Студент может существовать вне университета.
Ставь👍 , если было полезно!
Больше ответов на сайте👈 
✈️  С# собеседования
Ставь
Больше ответов на сайте
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
  👍6🔥5
  Для сериализации и десериализации объектов в 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
  