Вопросы по C#

Автор AlexXC, 09 марта 2025, 18:41

« назад - далее »

AlexXC

 :) Да уж, чем дальше, чем сложнее. И что такое асинхронное программирование? Как его использовать? Это же все параллели? Можно все это назвать так?

Ярик6

Асинхронное программирование позволяет выполнять задачи без блокировки основного потока. Например, можно использовать async и await:

public async Task DownloadDataAsync()
{
    using (HttpClient client = new HttpClient())
    {
        string data = await client.GetStringAsync("https://example.com");
        Console.WriteLine(data);
    }
}
Код асинхронно загружает данные с сайта.

AlexXC

Ярик, не устал от моих вопросов?  ::) А как работать с базами данных в C#? Например, с SQL Server? Я уже все переношу  в файл-шпаргалку, куда если что смогу заглядывать, когда это будет нужно.

Ярик6

;D  Спрашивай.
Для работы с базами данных используется ADO.NET или ORM, такой как Entity Framework. Например, с Entity Framework можно создать модель и работать с данными:
public class Car
{
    public int Id { get; set; }
    public string Brand { get; set; }
    public int Year { get; set; }
}

using (var context = new CarContext())
{
    var cars = context.Cars.Where(c => c.Year > 2019).ToList();
}
Тут код выбирает машины из базы данных.

AlexXC

С прошлыми примерами немного разобрался, благодарю. Если что еще напишу по ним детали.
Угу, что такое Dependency Injection? Как его использовать?

Ярик6

Dependency Injection — это же паттерн, который позволяет внедрять зависимости в классы. Например, в ASP.NET Core DI используется для управления зависимостями:
ublic class CarService : ICarService
{
    public void StartEngine() => Console.WriteLine("Двигатель завелся");
}

public class CarController
{
    private readonly ICarService _carService;

    public CarController(ICarService carService)
    {
        _carService = carService;
    }

    public void Start() => _carService.StartEngine();
}
Выше код внедряет CarService в CarController.

AlexXC

Ну и последний вопрос, который еще остался))) А как тестировать то код в C#? Какие инструменты использовать? И как понимать, что есть ошибка или нет?

Ярик6

Для тестирования кода используются фреймворки, такие как xUnit, NUnit или MSTest. Например, с xUnit можно написать тест:
public class CarTests
{
    [Fact]
    public void StartEngine_ShouldPrintMessage()
    {
        var car = new Car("Toyota", 2020);
        var output = new StringWriter();
        Console.SetOut(output);

        car.StartEngine();

        Assert.Contains("Toyota завелась!", output.ToString());
    }
}
Тут тест проверяет, что метод StartEngine выводит правильное сообщение.

AlexXC

Ну вроде все вопросы пока у меня.  ;D
Ярик, от души благодарю за такие примеры и ответы. Хотя бы стало понятно что правильно и что нет. Да и сами формулы пригодится могут.  8)