sono stato colpito in faccia da un comportamento molto strano del metodo System.IO.Directory.GetParent
:Bug in Directory.GetParent?
string path1 = @"C:\foo\bar";
DirectoryInfo parent1 = Directory.GetParent(path1);
Console.WriteLine (parent1.FullName); // Prints C:\foo, as expected
// Notice the extra backslash. It should still refer to the same location, right ?
string path2 = @"C:\foo\bar\";
DirectoryInfo parent2 = Directory.GetParent(path2);
Console.WriteLine (parent2.FullName); // Prints C:\foo\bar !!!
riterrei un bug, ma questo metodo è stato lì dal 1.0, quindi credo che sarebbe stato rilevato da adesso. D'altra parte, se è come progettato, non riesco a pensare ad una spiegazione ragionevole per un tale progetto ...
Cosa ne pensi? E 'un errore ? Altrimenti, come spiega questo comportamento?
È importante riconoscere perché il framework .NET ha * due * classi che si occupano di directory. Uno di loro indovina, l'altro verifica. Conosci la differenza. –
@Hans: in realtà, né Directory né DirectoryInfo verificano nulla ... Il percorso che ho usato per il mio test in realtà non esiste sul mio filesystem, ed entrambe le classi sono perfettamente felici di affrontarlo (a patto che non lo faccia qualcosa che richiede davvero la strada per esistere, ovviamente). Ad ogni modo, apparentemente Directory indovina in errore ... IMO dovrebbe trattare entrambi i percorsi esattamente nello stesso modo –
Dovrei verificare ma, sospiro, le probabilità che sia aggiustabile sono così ridotte. Non ha proprio senso Invia questo a connect.microsoft.com –