Tablice praktyczny przykład – Analiza linii CSV.

5) Analiza linii CSV.

Ponieważ każda linia / wiersz pliku CSV zawiera dane dla jednego miasta, oczywistym krokiem w importowaniu pliku danych będzie konwersja pojedynczej lini z pliku do instancji jednego miasta. Napiszę metodę, aby to zrobić i wrócę do Visual Studio. Nazwę metodę  ReadCityFromCsvLine.

Jako argument przyjmuje ciąg znaków, który będzie zawartością wiersza pliku, i zwraca instancję miasta, którą odczytaliśmy z linii pliku csv.
Więc jaka jest tutaj logika?
Pamiętamy, że każda linia pliku CSV zawiera nazwę miasta, kod, kraj, całkowita populacja tego miasta  w 2019r, populacja menzczyzn tego miasta  w 2019r, populacja kobiet tego miasta  w 2019r, oddzielone przecinkami, więc ta metoda musi podzielić ciąg, który został odczytany wszędzie tam, gdzie zawiera przecinek, abyśmy otrzymali sześć oddzielnych ciągów reprezentujących parametry wymagane przez konstruktor miasta.
I dokładnie to robi ta metoda, string.Split.
Jest to metoda do stringów, którą Microsoft udostępnił do dzielenia stringów, i tutaj doskonale pasuje do naszych celów.
Metoda split analizuje coś, co wygląda jak pojedynczy przecinek.
Argument mówi metodzie Split, który znak będzie separatorem, czyli znakiem oddzielającym pola.
W tym przypadku separatorem jest przecinek, ale w innym scenariuszu może to być znak tabulacji lub średnik i tak dalej. Split podzieli ciąg, gdziekolwiek zobaczy znak separatora, i zwróci wynik, ale tutaj jest interesująca rzecz.
Spójrz na to, co zwraca, to jest tablica ciągów. 
Widzisz, string.Split pobiera jeden duży ciąg i zwraca potencjalnie wiele mniejszych ciągów. Jak inaczej może zwrócić wiele innych ciągów niż w kolekcji. Mówiłem wam, że kolekcje są wszędzie.

Teraz jest łatwo. Tablica zwrócona przez string.Split będzie zawierać szesc stringów odpowiadających każdej kolumnie w każdej linii CSV.
Pierwsza część to miaso, druga to kod, trzecia to kraj, a czwarta to całkowita populacja tego miasta w 2019r, piąta populacja menzczyzn tego miasta  w 2019r, szosta populacja kobiet tego miasta  w 2019r, i oczywiście uzyskuję dostęp do tych danych przy użyciu składni nawiasu kwadratowego i pamiętamy, że tablica jest indeksowana do zera.
Muszę przekonwertować wszystkie populację na liczbę całkowitą i dla bezpieczeństwa używam int.parse,co spowoduje zgłoszenie wyjątku, jeśli z jakiegokolwiek powodu te pola nie mogą zostać przeanalizowane jako liczba całkowita.
Proste, co? Właściwie ten kod jest zbyt prosty.

Przy okazji wspomniałem, jak string.Split zwraca tablicę i wskazałem, że ilustruje to, jak szeroko stosowane są tablice, ale powinienem również zauważyć, że w tym kodzie jest ukryta druga tablica.
Jeśli zatrzymam kursor myszy nad metodą Split, spójrz na podpis metody.
Ta metoda nie przyjmuje znaku jako parametru pobiera tablicę znaków a w sygnaturze metody jest ten argument oznaczony słowem kluczowym params

Params zapewnia składnię w C#, który pozwola Ci po prostu podać indywidualne wartości metody, która zwykle oczekuje tablicy,  a kompilator powinien zbudować tablicę pod maską dla Ciebie.
Mogłem więc bardziej poprawnie napisać parametr jako tablicę zawierającą pojedynczy znak. jak napiszę teraz   new char[] { ‚,’ }
New char i dostarczyć wartości korzystając z initializatora tablicy .
I Nie ma to znaczenia, ponieważ to właśnie kompilator i tak zamieni ten kod jeśli nie napisze tablicy wprost.

Params nie jest czyms, co można spotkać zbyt często.
Więc nie ma się czym martwic na tym etapie uczenia się o kolekcjach.
ale daje to inna wskazówkę o tym jak powszechnie stosowane są tablice.

Cały kurs dostępny na Udemy

!!! Dodatkowo Prezent !!!

Książka „Wprowadzenie do kolekcji C#”

Kup kurs przez ten link. Jest to dla mnie ważne !!!