Aller au contenu

using statement

Contexte : L’instruction using en C# garantit que Dispose() est appelé sur un objet IDisposable, même si une exception se produit. C’est du sucre syntaxique pour un bloc try/finally. L’instruction using peut être utilisée avec plusieurs ressources et, depuis C# 8.0, avec await using pour la libération asynchrone.

using System;
using System.IO;
public class UsingDemo
{
public static void ReadFile(string path)
{
// using garantit Dispose() même en cas d'exception
using (FileStream fs = new FileStream(path, FileMode.Open))
using (StreamReader reader = new StreamReader(fs))
{
string content = reader.ReadToEnd();
Console.WriteLine(content.Length);
} // fs.Dispose() et reader.Dispose() sont appelés ici
}
// C# 8.0 using simplifié (sans accolades)
public static void ReadFileSimplified(string path)
{
using FileStream fs = new FileStream(path, FileMode.Open);
using StreamReader reader = new StreamReader(fs);
string content = reader.ReadToEnd();
Console.WriteLine(content.Length);
} // Dispose appelé à la fin de la méthode
}
Fenêtre de terminal
dotnet run
12345
  • using fonctionne avec tout type IDisposable.
  • L’objet est en lecture seule à l’intérieur du bloc using (ne peut pas être réaffecté).
  • Pour plusieurs ressources, des instructions using séparées sont plus claires.

Connexion base de donnéesusing (SqlConnection conn = new SqlConnection(connectionString)) garantit que la connexion est fermée même si une requête lève une exception.
Voir documentation .NET sur using statement.