tech · 2 min de lecture

Java Vs C# : le mot clé using en C#

Comparaison de Java et C# sur le mot clé using

Hugo
Hugo2 févr. 2011 · 2 min
Java Vs C# : le mot clé using en C#

Warning, warning, ceci n'est pas une rubrique à troll !!

Bien qu'étant plutot spécialiste Java, je me suis mis récemment au C#. Loin des débats qui n'en finissent plus pour savoir lequel des deux p... le plus loin, je tenais à faire une petite rubrique pour lister "les trucs qui tuent" qui existent dans chaque langage et que tout bon développeur aime connaitre.

Et donc le truc qui tue du jour :

le mot clé using en C#

Je ne vous l'apprends pas (enfin j'espère) en Java et en C#, on a l'habitude d'utiliser des blocs finally pour fermer les ressources proprement en cas d'exception.

Par exemple :

java
InputStream   input = null;
try
{
    input = new FileInputStream(fileName);
    //...process input stream...
}catch (IOException e)
{
    // do something
}
finally
{
    if(input != null)
    {
       try
       {
           input.close();
       }
       catch(IOException e)
       {
       }
   }
}

Verbeux n'est ce pas ?

En C# le truc qui tue ? Pas besoin de bloc finally, la fermeture des ressources peut être faite automatiquement avec la syntaxe suivante :

csharp
using (System.IO.StreamReader sr = new System.IO.StreamReader(@"C:UsersPublicDocumentstest.txt"))
{
 string s = null;  
 while((s = sr.ReadLine()) != null)  
 {      
 Console.WriteLine(s);  
 }
}

Le mot clé using permet de désigner les ressources à fermer à la fin du bloc. Ces ressources implémentent l'interface IDisposable.

Mais un peu d'espoir quand même pour les javaistes, la fonctionnalité est prévue pour JDK7 avec les blocs ARM :

java
public void copy(String sourceFile, String destFile) throws IOException
{
    try (InputStream input = new FileInputStream(sourceFile); OutputStream output = new FileOutputStream(destFile) )
    {
        byte[] buf = new byte[8192];
        int len;
        while ( (len=input.read(buf)) >= 0 )
        {
            output.write(buf, 0, len);
        }
    }
}

En plus j'apprécie qu'ils aient réutilisé le mot clé try pour les gérer, ca porte moins à confusion que using en C# qui est déjà utilisé pour les imports.

Hugo

Écrit par

Hugo

Software Engineer with more than 20 years of experience. I love to share about technologies and startups

Vous avez aimé ce récit ?

Environ un mail par mois, quand un texte mérite d'être écrit. Vos lecteurs restent vos lecteurs.

205 abonnés · désabonnement en un clic

À lire aussi

Java Vs C# : La gestion des exceptions

Comparaison de Java et C# sur la gestion des exceptions

23 mars 2011
Java Vs C# : La gestion des exceptions

Java Vs C# : Les types valeurs en C#

Comparaison de Java et C# sur les types valeurs

1 mai 2011
Java Vs C# : Les types valeurs en C#

Java Vs C# : Eviter les conflits de nom dans les interfaces

Comparaison de Java et C# sur les conflits de nom dans les interfaces

29 mars 2011
Java Vs C# : Eviter les conflits de nom dans les interfaces

Réponses

0 Commentaire

Pas encore de commentaire. Soyez le premier !