Lista part.2 – odczyt danych.
Podczas omawiania tablic napisaliśmy kod, który odczytuje pierwsze 7 miast z pliku CSV, ale co się stanie, jeśli chcemy odczytać wszystkie kraje z pliku CSV?
Czy możemy to zrobić?
Cóż, jest problem. Spójrz na kod w metodzie ReadFirstNCitys, która tworzy instancję tablicy do przechowywania miast. Tworząc tablicę, mówimy, jak duża będzie,
to znaczy, ile elementów będzie zawierać.
public City[] ReadFirstNCitys(int nCitys)
{
City[] citys = new City[nCitys];
...
return citys;
}
To dobrze, kiedy z góry zdecydowaliśmy, że chcemy odczytać 7 miast, ale jeśli chcemy odczytać wszystkie miasta, a kod odczytuje plik CSV wiersz po wierszu.
Wtedy nie będziemy wiedzieć, ile jest miast, dopóki kod nie osiągnie końca pliku i nie odkryje, że nie ma już więcej miast, ale to jest już za późno, aby utworzyć tablicę, ponieważ musimy umieścić miasta w tablicy, gdy każde z nich zostanie zaimportowane.
Dlatego w tej sytuacji musimy utworzyć instancję kolekcji, zanim dowiemy się, ile elementów będziemy w niej przechowywać.
Jak możemy to zrobić za pomocą tablicy?
Niestety, w przypadku tablic odpowiedź brzmi:
nie możemy i to jest podstawowa słabość tablic. Tablice mają stały rozmiar.
Musimy określić rozmiar tablicy, kiedy tworzymy tablicę, ile elementów zawiera ta tablica, a potem nigdy nie możemy zmienić tego rozmiaru.
To świetnie, jeśli jest to zbiór powiedzmy miesięcy w roku lub dni tygodnia,
kiedy dokładnie wiemy, ile elementów będziemy potrzebować, ale w większości przypadków, gdy czytamy dane z zewnętrznego źródła danych, nie wiemy, ile elementów będzie, dopóki nie skończymy czytać danych.
I tu pojawia się lista – List<T>
Lista jest bardzo podobna do tablicy, z tym wyjątkiem, że nie ma ustalonego rozmiaru. Możemy dowolnie dodawać do niej dowolną liczbę elementów, kiedy tylko chcemy.
Lista automatycznie rozszerza się i kurczy w zależności od zawartości.
Po utworzeniu obiektu listy możemy w łatwy sposób wstawiać elementy,
usuwać wybrane z dowolnego miejsca, podglądać ich zawartość,
a nawet przenosić z jednego miejsca w inne.
Jeśli chcemy, aby lista stringów zawierała miesiące, deklarujemy zmienną jako Listę stringów.
List<string> months = new List<string>();
I będzie ona równa nowej liście stringów i zauważ, że nazwa typu, którego jest lista to string. Podobnie, gdybyśmy chcieli listę liczb całkowitych.
List<int> ints = new List<int>();
I innego typu listy.
List<double> chars = new List<double>();
List<char> chars = new List<char>();
List<Person> chars = new List<Person>();
Po prawej stronie znaku równości widać standardową składnię konstruktora C#. Konstruktor nie ma parametrów, ponieważ w przeciwieństwie do tablicy, lista zawsze zaczyna swoje życie jako pusta. Musimy dynamicznie dodawać do niej elementy po utworzeniu jej.
Nazwa typu listy ma oczywiście inną składnię niż tablice, w których można by zobaczyć coś w rodzaju nawiasów kwadratowych, ponieważ tablice są częścią środowiska wykonawczego .NET i dlatego mają swoją własną specjalną składnię w języku C#.
Z drugiej strony lista jest zwykłym typem, a zatem jest zgodna z normalną składnią C# przy tworzeniu nowych obiektów.
Zasadniczo listy są bardziej elastyczne niż tablice,
ale tablice zwykle dają ci prostszy kod,
więc jako ogólną zasadę użyj listy zamiast tablicy tylko wtedy,
gdy jest to sytuacja, w której nie możesz użyć tablicy.
Całościowe omówienie tematu kolekcji (tablica, lista, kolejka, stos, słownik).
Wiele przydatnych wskazówek i dobrych praktyk dostępne jest na kursie:
Wow! In the end I got a website from where I be capable of in fact get valuable information concerning my study and knowledge. Mimi Reinold Lionel
Thank you ever so for you article. Much thanks again. Awesome. Patricia Mischa Streeto
Way cool! Some extremely valid points! I appreciate you penning this write-up and also the rest of the website is really good. Raquela Rowney Gino
Thanks for your whole work on this website. My niece takes pleasure in working on research and it is simple to grasp why. We all notice all relating to the powerful ways you render vital tricks via your website and therefore welcome response from website visitors on this topic while our own simple princess is without question understanding so much. Take pleasure in the rest of the year. Your performing a very good job. Robina Peadar Darrin
It is best to participate in a contest for among the best blogs on the web. Laureen Paddy Zumstein
matter to be really one thing that I think I might never understand. Eleanore Julian Aprile
thanks Jill. I always wonder how insights into the making of writing are viewed, especially ones that draw on personal circumstances. Are they too immature? Should they be hidden from sight? But they help me understand not only the process of writing but the process of living, and how the two are connected. Pepita Travus Aholla
Zourbuth, thanks for the incredible plug-in! It really looks great! Marilee Allistir Sontag
Very informative information. I plan to share this with friends and family. I also plan to visit the web site you gave us. Really liked the picture of the hand reaching for the credit card! Nerte Delano Sherill
Thank you ever so for you blog article. Really looking forward to read more. Want more. Philippine Cullie Amaryl
Hurrah! After all I got a weblog from where I know how to truly take valuable facts regarding my study and knowledge. Christen Dukey Palermo
Wow, superb blog layout! How long have you been blogging for? Shawn Brig Gard
Id have to examine with you here. Which is not one thing I usually do! I enjoy studying a submit that may make people think. Also, thanks for allowing me to comment! Malinda Ase Veleda
Asking questions are genuinely pleasant thing if you are not understanding anything completely, except this post offers pleasant understanding yet.| Collen Roarke Samul
Way cool! Some extremely valid points! I appreciate you writing this write-up and the rest of the website is very good. Vivia Lazar Burney
Thank you so much and I am looking ahead to touch you. Lorilyn Garold Touber Christian Cece Brandyn
Good blog post. I certainly love this site. Stick with it! Katrine Bradford Carmella
thanks
Hey there! Do you know if they make any plugins to assist with SEO? Aloysia Teador Winni
I visited various sites but the audio quality for audio songs current at this web page is genuinely superb.| Vanda Germain Alesandrini
Hi friends, how is the whole thing, and what you desire to say on the topic of this piece of writing, in my view its actually amazing for me. Nora Bradford Leake
I am continually searching online for articles that can facilitate me. Thanks! Alidia Costa Sulamith
Thank you so much for sharing your experience with Wealthy Affiliate, and I wish you success with your business! Patty Sanders Luthanen
I really appreciate this post. I have been looking all over for this! Thank goodness I found it on Bing. You have made my day! Thx again! Karel Micky Cavanaugh
Everything is very open with a clear clarification of the issues. It was really informative. Your website is extremely helpful. Thanks for sharing! Enrichetta Richard Karly
thanks
Yes. So much good stuff here. I especially love practicing gratitude. Selma Balduin Annamarie
Superb, what a website it is! This website gives useful information to us, keep it up. Deb Davis Neille
thanks
I have read a few good stuff here. Certainly worth bookmarking for revisiting. I wonder how much effort you put to create such a excellent informative site. Sukey Svend Karlin
thanks
This is one awesome blog article. Much thanks again. Really Cool. Ingunna Natty Millford
thanks
I like it when folks come together and share views. Great site, stick with it! Krystal Lorne Bessie
thanks
Everyone loves it when folks get together and share ideas. Great site, stick with it! Marlane Albie Hesky
I like the helpful info you provide in your articles. I will bookmark your weblog and check again here regularly. Betsey Chance Ichabod
thanks
Everything is very open with a very clear description of the issues. It was really informative. Your website is useful. Thank you for sharing! Kylen Jarret Niple
thanks
Pretty! This was a really wonderful article. Thanks for providing this information. Dale Leonidas Lenhard
thanks
excellent issues altogether, you simply gained a new reader. Georgeanne Sherlocke Cown
thanks
Way cool! Some extremely valid points! I appreciate you writing this write-up plus the rest of the website is really good. Hilda Hamilton Diane-Marie
thanks
bardzo ciekawy artykuł, pisz dalej…
dzieki
Chciałbym zostać praktykantem, podczas gdy ty piszesz, jak mogę zapisać się na blog?
dzieki
Wszyscy uwielbiają, gdy ludzie spotykają się i dzielą przemyśleniami. Świetna strona internetowa, kontynuuj dobrą pracę!
dzieki
Wow, fantastyczny układ bloga! Jak długo blogujesz? dzięki tobie blogowanie wygląda na łatwe. Ogólny wygląd Twojej witryny internetowej jest świetny, podobnie jak zawartość!
dzieki
Ta informacja jest bezcenna. Jak mogę dowiedzieć się więcej?
dzieki wielkie
dobra robota, tak trzymaj!
dzieki
WOW, właśnie tego szukałem. Przyszedłem tutaj, wyszukując słowo kluczowe
dzieki
Mój programista próbuje przekonać mnie do przejścia na .net z PHP.
dobry wybór. dzieki
Sprawdzałem wiele twoich wpisów i muszę powiedzieć, że całkiem niezłe rzeczy. Na pewno dodam twoją stronę do zakładek.
dzieki
bardzo doceniam Twoja robote!
dzieki
super wooww..
dzieki
Ten projekt jest niesamowity! Oczywiście wiesz, jak zapewnić rozrywkę czytelnikowi.
dzieki
Czy nie masz nic przeciwko, jeśli zacytuję kilka Twoich postów, o ile podam informacje o autorach i źródłach z powrotem do Twojej witryny? Mój blog znajduje się dokładnie w tej samej niszy, co Twoja, a moi goście z pewnością skorzystaliby z wielu informacji, które tu podajesz. Daj mi znać, jeśli ci to odpowiada. Pozdrowienia!
dzieki. bedzie mi bardzo miło, nie ma problemu
Szacunek dla autora strony, kilka dobrych selektywnych informacji.
dzieki
Wspaniała strona internetowa. Wiele pomocnych informacji tutaj.
dzieki
Dziś surfuję po sieci ponad 4 godziny, ale nigdy nie znalazłem interesującego artykułu takiego jak Twój. To jest dla mnie wystarczająco warte. Osobiście, jeśli wszyscy właściciele witryn i blogerzy stworzyli dobre treści, tak jak Ty, Internet będzie o wiele bardziej przydatny niż kiedykolwiek wcześniej.
dzieki
bardzo dobrze się to czyta merytoryczna zawartosc!
dzieki
Świetny blog tutaj! Dodatkowo twoja strona www zmienia się bardzo szybko!
dzieki
Cześć. Odkryłem Twoją witrynę za pośrednictwem Google, gdy szukałem podobnej sprawy, Twoja witryna pojawiła się. Wygląda na to, że jest dobra. Dodałem go do zakładek w moich zakładkach Google, aby ją odwiedzić.
dzięki
Zrobiłeś tam kilka fajnych uwag. Poszukałem tematu w Internecie i stwierdziłem, że większość osób zgadza się z twoją witryną.
dzieki
Lubię czytać post, który skłoni ludzi do myślenia. Dziękuję również za umożliwienie mi komentowania. Melissa Christos Sheehan
dzieki
W sumie wspaniałe wydania, właśnie otrzymałeś nowego czytelnika. Nicol Niven Breanne
dzieki
Lubię czytać post, który sprawi, że ludzie myślą. Wielkie dzięki za umożliwienie mi komentowania!
dzieki
To moja ulubioną tę stronę internetową, wydaje się bardzo korzystna, nieoceniona. Eliza
dziękuje
dobra robota, czytam wszystko co jest
dzieki
Dobry artykuł, wspaniała robota, czymaj tak dalej
dzięki
bardzo dobry post
Spółka to pomysłowy wynalazek, zwykle składa się jak kubistyczny obrazek, dla zapewnienia sobie indywidualnych zysków i uniknięcia odpowiedzialności, przez co urząd skarbowy ogarnia furia złości… 🙂 JAK NIE PŁACIĆ Podatków ? look this >> Raje Podatkowe Warto!
This is very interesting, You are a very skilled blogger. I’ve joined your feed and look forward to seeking more of your excellent post. Also, I’ve shared your web site in my social networks!
thanks
We are a gaggle of volunteers and opening a brand new scheme in our community. You’ve performed an impressive task and our entire community will probably be thankful to you.
Thank you very much
Bardzo inspirujący artykuł! Cieszę się, że natrafiłem na Twojego bloga
Wspaniałe podejście do tematu. Mam nadzieję, że napiszesz więcej na ten temat
Świetne porady! Chętnie przetestuję to w swoim kodzie.
Świetny artykuł! Bardzo klarowne wyjaśnienia i przykłady
Artykuł jest inspirujący! Dzięki niemu mam ochotę eksperymentować i pogłębiać swoją wiedzę na ten temat
Twoje przykłady kodu są bardzo pomocne. Pomagają zrozumieć, jak zastosować te koncepcje w praktyce
Twój artykuł zawsze jest pierwszym miejscem, gdzie zaglądam, gdy chcę dowiedzieć się więcej na temat
Masz umiejętność przekazywania informacji w sposób, który sprawia, że każdy może zrozumieć. To niesamowite
Thank you for sharing all these wonderful blogposts.
Zawsze znajduję tutaj wartościowe informacje. Dzięki za to
Ciekawy punkt widzenia. Wartościowe spojrzenie na temat. Świetne praktyczne przykłady. To, co najbardziej lubię w Twoich artykułach
In 1965 they bought the farm from his parents buy viagra connect