interface
. Интерфейсы определяют контракт, который должен быть реализован классами. Они могут содержать объявления методов, свойств, событий и индексаторов, но не содержат реализации.
// Объявление интерфейса IExample
public interface IExample
{
// Метод без реализации
void DoSomething();
// Свойство без реализации
int Value { get; set; }
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12💯2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2
public void ProcessData(IReadOnlyCollection<int> data)
{
// Перебор элементов коллекции
foreach (var item in data)
{
// Обработка элемента
}
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3
using System;
class Program {
static void Main() {
// Объявление и инициализация массива
int[] numbers = new int[5] {1, 2, 3, 4, 5};
// Доступ к элементам массива
Console.WriteLine(numbers[0]); // Вывод: 1
// Изменение значения элемента
numbers[0] = 10;
// Перебор массива с помощью цикла
foreach (int number in numbers) {
Console.WriteLine(number); // Вывод: 10 2 3 4 5
}
}
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1
Func
и Action
— это обобщенные делегаты, используемые для представления методов.Func<int, int, int> add = (x, y) => x + y; // Func принимает два int и возвращает int
int result = add(2, 3); // result = 5
Action<string> greet = name => Console.WriteLine($"Hello, {name}!"); // Action принимает строку и ничего не возвращает
greet("World"); // Выведет: Hello, World!
Func
используется, когда нужен результат, Action
— для выполнения действий без возврата значения.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥3❤1🤔1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥4
using System.IO;
using Newtonsoft.Json;
class Program
{
static void Main()
{
// Чтение содержимого JSON-файла
string json = File.ReadAllText("data.json");
// Десериализация JSON в объект
var data = JsonConvert.DeserializeObject<MyData>(json);
// Использование данных
// ...
}
}
class MyData
{
// Определение свойств, соответствующих структуре JSON
public string Name { get; set; }
public int Age { get; set; }
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🤩2👀1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3
using System;
using System.Threading.Tasks;
class Program {
static void Main() {
Task<int> task = Task.Run(() => {
// Выполняемая задача
return 42;
});
task.ContinueWith(t => {
// Продолжение после завершения задачи
Console.WriteLine($"Result: {t.Result}");
});
Console.ReadLine();
}
}
ContinueWith() позволяет организовать асинхронное выполнение, улучшая читаемость и управление потоками.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
==
и Equals
— операторы сравнения, но работают по-разному. ==
проверяет равенство ссылок для ссылочных типов и значение для примитивных типов. Его поведение можно переопределить.
string a = "hello";
string b = "hello";
bool result = (a == b); // true, сравнивает значения строк
Equals
— метод, который сравнивает содержимое объектов. По умолчанию, для ссылочных типов проверяет равенство ссылок, но может быть переопределён для сравнения содержимого.
object obj1 = new object();
object obj2 = new object();
bool isEqual = obj1.Equals(obj2); // false, разные объекты
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍5
Queue (очередь) работает по принципу FIFO (First In, First Out), где первый добавленный элемент будет первым извлечён. Это полезно для задач, где порядок обработки важен, например, в очередях задач.
Stack (стек) работает по принципу LIFO (Last In, First Out), где последний добавленный элемент будет первым извлечён. Это удобно для задач, связанных с отменой операций или рекурсией.
using System;
using System.Collections.Generic;
class Program {
static void Main() {
// Создание и использование очереди
Queue<int> queue = new Queue<int>();
queue.Enqueue(1);
queue.Enqueue(2);
Console.WriteLine(queue.Dequeue()); // Выводит 1
// Создание и использование стека
Stack<int> stack = new Stack<int>();
stack.Push(1);
stack.Push(2);
Console.WriteLine(stack.Pop()); // Выводит 2
}
}
Queue и Stack обеспечивают эффективное управление элементами в различных сценариях.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2
Блок try используется для оборачивания кода, который может вызвать исключение. Если в этом блоке происходит ошибка, управление передается в ближайший блок catch.
Блок catch перехватывает исключение и позволяет выполнить код для обработки ошибки. Можно указать специфичный тип исключения для обработки или использовать базовый класс Exception.
Блок finally выполняется в любом случае, независимо от того, произошло исключение или нет. Этот блок обычно используется для освобождения ресурсов.
try
{
// Ошибочный код
int result = 10 / int.Parse("0");
}
catch (DivideByZeroException ex)
{
// Обработка деления на ноль
Console.WriteLine("Ошибка: деление на ноль.");
}
catch (FormatException ex)
{
// Обработка неверного формата
Console.WriteLine("Ошибка: неверный формат числа.");
}
finally
{
// Код, выполняющийся всегда
Console.WriteLine("Завершение блока try-catch-finally.");
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3🔥1
В C# инкапсуляция достигается с помощью модификаторов доступа:
- private: Доступ только внутри класса.
- protected: Доступ внутри класса и производных классов.
- public: Доступ из любого места.
- internal: Доступ в пределах сборки.
class Account {
private decimal balance; // Скрытое поле
public void Deposit(decimal amount) {
if (amount > 0) balance += amount; // Контролируемое изменение
}
public decimal GetBalance() {
return balance; // Контролируемый доступ
}
}
В этом примере поле
balance
скрыто, а методы Deposit
и GetBalance
предоставляют контролируемый доступ к нему. Инкапсуляция повышает безопасность и упрощает поддержку кода.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤1