Je travaille sur un projet. Je dois comparer le contenu de deux fichiers et voir s'ils correspondent exactement l'un à l'autre.
Avant un grand nombre de contrôles d'erreurs et de validations, mon premier projet est :
DirectoryInfo di = new DirectoryInfo(Environment.CurrentDirectory + "\\TestArea\\");
FileInfo[] files = di.GetFiles(filename + ".*");
FileInfo outputFile = files.Where(f => f.Extension == ".out").Single<FileInfo>();
FileInfo expectedFile = files.Where(f => f.Extension == ".exp").Single <FileInfo>();
using (StreamReader outFile = new StreamReader(outputFile.OpenRead()))
{
using (StreamReader expFile = new StreamReader(expectedFile.OpenRead()))
{
while (!(outFile.EndOfStream || expFile.EndOfStream))
{
if (outFile.ReadLine() != expFile.ReadLine())
{
return false;
}
}
return (outFile.EndOfStream && expFile.EndOfStream);
}
}
Il semble un peu étrange d'avoir imbriqué des using
déclarations.
Y a-t-il une meilleure façon de procéder ?
0 votes
Je pense avoir trouvé une manière syntaxiquement plus propre de déclarer cette instruction using, et cela semble fonctionner pour moi ? Utiliser var comme type dans l'instruction using au lieu de IDisposable semble me permettre d'instancier mes deux objets et d'appeler leurs propriétés et méthodes de la classe avec laquelle ils sont alloués, comme dans using(var uow = UnitOfWorkType1(), uow2 = UnitOfWorkType2()){}.
0 votes
Duplicata possible de Traitement des instructions "using" imbriquées en C#