Sobes.tech
Junior

Афзалиятҳои истифодаи блоки using дар C# чист?

sobes.tech AI

Ҷавоб аз AI

Дар using дар C# барои идораи автоматии захираҳое истифода мешавад, ки интерфейси IDisposable-ро иҷро мекунанд.

Арзиши асосӣ:

  1. Роҳати кафолатии озод кардани захираҳо: Новобаста аз он ки дар дохили блок ягон истисно рух медиҳад ё не, усули Dispose() автоматӣ ҳангоми баромадан аз блоки using даъват мешавад. Ин пешгирӣ мекунад аз ҷорӣ шудани сӯроқҳои захираҳо.

  2. Осон кардани коди: Зарур нест, ки Dispose()-ро дар блокҳои finally ё catch даъват кунед, ки ин коди шуморо ба назар осонтар ва камтар хатогӣовар мекунад.

  3. Кор бо захираҳои ғайримустақим: using метавонад барои идораи захираҳое, ки дар дохили ҳамин блок ғайримустақим эҷод мешаванд, истифода шавад.

Масалан:

// Истифодаи StreamWriter барои навиштани дар файл
using (StreamWriter writer = new StreamWriter("myfile.txt"))
{
    writer.WriteLine("Hello, world!");
    // StreamWriter автоматӣ баста ва озод мешавад вақте ки аз ин блок мебарояд
}

// Мисоли дигар бо захирае, ки метавонад истисно эҷод кунад
using (var connection = new SqlConnection("connection string"))
{
    connection.Open();
    // Оғоз кардани амалиётҳо бо базаи додаҳо.
    // Агар истисно рух диҳад, `Dispose()` ҳамеша даъват мешавад.
} // connection.Dispose() дар ин ҷо даъват мешавад