namespace MyApp {
class Program {
static void Main() {
System.Console.WriteLine("Hello, World!");
}
}
}
Для доступа к элементам из другого пространства имен используется ключевое слово
using
.
using System;
namespace MyApp {
class Program {
static void Main() {
Console.WriteLine("Hello, World!");
}
}
}
Пространства имен упрощают структурирование больших проектов и предотвращают дублирование имен.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1
DbSet
соответствует таблице в базе данных, а его элементы — строкам этой таблицы.
public class ApplicationContext : DbContext
{
public DbSet<User> Users { get; set; } // Представляет таблицу Users
}
DbSet
предоставляет методы для добавления, удаления и поиска данных. Например, Add()
добавляет новую сущность, а Find()
ищет по первичному ключу.
var user = new User { Name = "John" };
context.Users.Add(user); // Добавление сущности
context.SaveChanges(); // Сохранение изменений в базе
Используется в Entity Framework для работы с данными в объектно-ориентированном стиле.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤6
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
var numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumbers = from num in numbers
where num % 2 == 0
select num;
В этом примере LINQ используется для фильтрации чётных чисел из списка. Также LINQ поддерживает методы расширения, такие как
Where
, Select
, OrderBy
, что делает запросы более гибкими и выразительными. LINQ упрощает обработку данных и повышает читаемость кода.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1
static
используется для определения членов класса, которые принадлежат самому классу, а не его экземплярам. Статические поля и методы общие для всех объектов класса и могут быть вызваны без создания экземпляра.
class Counter {
public static int Count = 0; // статическое поле
public static void Increment() { // статический метод
Count++;
}
}
Counter.Increment(); // вызов статического метода
Console.WriteLine(Counter.Count); // доступ к статическому полю
- Статические поля инициализируются один раз и существуют на протяжении всего времени работы программы.
- Статические методы могут обращаться только к статическим членам класса.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍3
Action
, Func
и Predicate
— это встроенные делегаты в C#. -
Action
используется для методов, которые не возвращают значение (void). Может принимать от 0 до 16 параметров.
Action<int> printNumber = (x) => Console.WriteLine(x);
-
Func
используется для методов, возвращающих значение. Последний тип в шаблоне указывает тип возвращаемого значения.
Func<int, int, int> sum = (a, b) => a + b;
-
Predicate
— это специализированный делегат, возвращающий bool
. Обычно используется для проверки условий.
Predicate<int> isEven = (x) => x % 2 == 0;
Action
и Func
более универсальны, а Predicate
предназначен для логических проверок.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1
Логические операторы
- && (И)
Возвращает
- || (ИЛИ)
Возвращает
Пример:
Короткое замыкание позволяет оптимизировать вычисления и избежать ошибок, связанных с выполнением ненужных операций.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ С# собеседования
&&
(И) и ||
(ИЛИ) используются для выполнения операций над булевыми значениями. - && (И)
Возвращает
true
, если оба операнда истинны. Если первый операнд ложный, второй не вычисляется (короткое замыкание). - || (ИЛИ)
Возвращает
true
, если хотя бы один из операндов истинный. Если первый операнд истинный, второй не вычисляется (короткое замыкание). Пример:
bool a = true, b = false;
bool result1 = a && b; // false, так как b ложное
bool result2 = a || b; // true, так как a истинное
Короткое замыкание позволяет оптимизировать вычисления и избежать ошибок, связанных с выполнением ненужных операций.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
Пример:
Func<int, int, int> sum = delegate(int a, int b) { return a + b; };
int result = sum(2, 3); // Результат: 5
Анонимные методы часто заменяются лямбда-выражениями, но могут быть полезны в случаях, когда требуется совместимость с более старыми версиями языка.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
IDisposable
в классе используется шаблон Disposable, который включает финализатор и метод Dispose
. Это позволяет корректно освобождать управляемые и неуправляемые ресурсы.Пример:
public class Resource : IDisposable {
private bool disposed = false;
protected virtual void Dispose(bool disposing) {
if (!disposed) {
if (disposing) {
// Освобождение управляемых ресурсов
}
// Освобождение неуправляемых ресурсов
disposed = true;
}
}
public void Dispose() {
Dispose(true);
GC.SuppressFinalize(this);
}
~Resource() {
Dispose(false);
}
}
Метод
Dispose
вызывается явно для освобождения ресурсов, а финализатор гарантирует очистку, если Dispose
не был вызван.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
AggregateException
— это специальный тип исключения, который используется для объединения нескольких исключений в одно. Это часто происходит в асинхронных операциях или при параллельном выполнении задач, где может возникнуть несколько ошибок одновременно.
try {
Task.WaitAll(task1, task2); // Может выбросить AggregateException
}
catch (AggregateException ex) {
foreach (var innerEx in ex.InnerExceptions) {
Console.WriteLine(innerEx.Message); // Обработка каждого внутреннего исключения
}
}
Этот тип исключения позволяет обработать все ошибки в одном месте.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
int Factorial(int n) {
if (n == 0) // Базовый случай
return 1;
return n * Factorial(n - 1); // Рекурсивный случай
}
Базовый случай предотвращает бесконечную рекурсию, а рекурсивный случай разбивает задачу на более простые подзадачи. Рекурсия часто используется для работы с деревьями, графами и алгоритмами, где задача естественно делится на подзадачи.
Важно учитывать глубину рекурсии, чтобы избежать переполнения стека.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤1🤔1
IAsyncEnumerable<T>
— это интерфейс, который позволяет асинхронно возвращать последовательности данных. Он используется для работы с потоками данных, которые генерируются или извлекаются асинхронно.
async IAsyncEnumerable<int> FetchDataAsync() {
for (int i = 0; i < 10; i++) {
await Task.Delay(100); // Асинхронная задержка
yield return i; // Возврат элемента последовательности
}
}
Для потребления данных используется
await foreach
:
await foreach (var item in FetchDataAsync()) {
Console.WriteLine(item);
}
IAsyncEnumerable<T>
полезен при работе с асинхронными источниками данных, такими как базы данных, сетевые запросы или файловые потоки, где данные поступают постепенно.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3