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 :
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 :
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 :
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.
Stay in the loop
Get new articles delivered directly to your inbox. No spam, unsubscribe anytime.


No comments yet. Be the first to comment!