Wpis z mikrobloga

Mirki z #csharp #programowanie. Mam taka metodę

public void readRobotNames()
{
robotPathList = System.IO.Directory.GetDirectories(robBCKPfolder);
robotList = robotPathList;
//Pobiera ostatni folder w ścieżce dostępu
for (int i = 0; i < robotList.Length;i++ )
{
robotList[i] = robotList[i].Split('\').Last();
}

}

Wszystko się rozbija o to, że po tej operacji zarówno zmienna robotPathList jak i zmienna robotList mają wartość tak jakby obie były splitowane? WTF? W czym jest błąd?
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Hans_Olo: @zwykly_obywatel: masz dwie referencje do jednego obiektu. Zmienisz obiekt, wiec wszystko jest ok.
Potrzebujesz kopie obiektu jesli chcesz mieć "czysta" wersje.
Normalnie deepcopy potrzebne, ale ze stringi sa specjalne to starzy "zwykle"
  • Odpowiedz
@Hans_Olo: na cholerę w ogóle ci druga lista skoro z niej nie korzystasz? A dwa, robienie splita na systemie plików to głupota. Trzy - so do tego gotowe funkcje ;)
  • Odpowiedz
@M4ks: Uczę się dopiero, wiec nie wszystko jeszcze ogarniam. Korzystam, ale nie wszędzie. Jedna lista jest dla GUI, żeby użytkownik nie męczył się z całymi ścieżkami, a druga dla obsługi plików.
  • Odpowiedz
@Hans_Olo
Moglbys uzyc klasy DIrectoryInfo razem z linq, mniej wiecej tak :
var di = new DirectoryInfo(robBCKPfolder);
var robotPathList = di.GetDirectories();
var robotList = folders.Select(x=>x.Name);
  • Odpowiedz