Tablice vs. Listy w C#: jak przechowywać dane dynamicznie?

Tablice vs. Listy w C#: jak przechowywać dane dynamicznie?

W języku C# mamy różne sposoby przechowywania kolekcji danych. Najczęściej początkujący programiści zaczynają od tablic (array), ale szybko pojawia się pytanie: co zrobić, gdy nie znamy liczby elementów na starcie?

Problem z tablicami

Tablica w C# ma stały rozmiar. Musimy go podać w momencie tworzenia:

public City[] ReadFirstNCities(int nCities)
{
    City[] cities = new City[nCities];
    // ... wypełnianie tablicy
    return cities;
}

Jeśli z góry wiemy, że chcemy odczytać np. 7 miast – wszystko działa. Ale co jeśli chcemy wczytać wszystkie rekordy z pliku CSV i nie znamy ich liczby?

Przy tablicach to problem, bo:

  • musimy z góry znać rozmiar,
  • nie możemy go później zmienić,
  • dane są wczytywane stopniowo, więc nie da się przewidzieć końcowej liczby elementów.

Dlatego w takich przypadkach tablica nie jest najlepszym rozwiązaniem.


Rozwiązanie: List<T>

W takich scenariuszach używamy Listy (List<T>). Jest to dynamiczna kolekcja w .NET, która automatycznie zwiększa lub zmniejsza swój rozmiar w zależności od liczby elementów.

List<City> cities = new List<City>();

using (var reader = new StreamReader("cities.csv"))
{
    while (!reader.EndOfStream)
    {
        var line = reader.ReadLine();
        var city = new City(line);
        cities.Add(city); // dodajemy element bez martwienia się o rozmiar
    }
}

Zalety List<T>:

  • brak konieczności podawania rozmiaru z góry,
  • łatwe dodawanie i usuwanie elementów (Add, Remove, RemoveAt),
  • dostęp do elementów przez indeks jak w tablicy (cities[0]),
  • wsparcie dla LINQ (Where, OrderBy, Select).

Porównanie: kiedy używać tablic, a kiedy listy?

Tablice (T[])
✅ prostsze i szybsze przy stałej liczbie elementów (np. 12 miesięcy, 7 dni tygodnia)
❌ rozmiar musi być znany w momencie tworzenia

Listy (List<T>)
✅ dynamiczne dodawanie i usuwanie elementów
✅ wygodne w pracy z danymi z plików, baz danych, API
❌ minimalnie większy narzut wydajności niż tablica


Przykłady użycia List<T> w C#

Jeśli chcemy, aby lista stringów zawierała miesiące, deklarujemy zmienną jako Listę stringów.

List<string> months = new List<string>
{
    "January", "February", "March"
};
months.Add("April");

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> double = new List<double>();
List<char> chars = new List<char>();

List<Person> people = new List<Person>();
people.Add(new Person("Jan", "Kowalski"));
people.Add(new Person("Anna", "Nowak"));

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.

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
.

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.

Podsumowanie

  • Tablice w C# mają stały rozmiar → dobre przy danych o znanej liczbie elementów.
  • List<T> to dynamiczna kolekcja → lepsza przy danych z plików, baz, API.
  • Listy oferują dodatkowe metody i integrację z LINQ.

👉 Jeśli chcesz nauczyć się pracy z kolekcjami w .NET (lista, tablica, stos, kolejka, słownik) i poznać dobre praktyki, sprawdź kurs:
https://dev-hobby.pl/kursy/c-wprowadzenie-do-kolekcji/

116 comments

  1. 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

  2. Thank you ever so for you article. Much thanks again. Awesome. Patricia Mischa Streeto

  3. 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

  4. 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

  5. It is best to participate in a contest for among the best blogs on the web. Laureen Paddy Zumstein

  6. matter to be really one thing that I think I might never understand. Eleanore Julian Aprile

  7. 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

  8. Zourbuth, thanks for the incredible plug-in! It really looks great! Marilee Allistir Sontag

  9. 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

  10. Thank you ever so for you blog article. Really looking forward to read more. Want more. Philippine Cullie Amaryl

  11. 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

  12. Wow, superb blog layout! How long have you been blogging for? Shawn Brig Gard

  13. 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

  14. Asking questions are genuinely pleasant thing if you are not understanding anything completely, except this post offers pleasant understanding yet.| Collen Roarke Samul

  15. 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

  16. Thank you so much and I am looking ahead to touch you. Lorilyn Garold Touber Christian Cece Brandyn

  17. Good blog post. I certainly love this site. Stick with it! Katrine Bradford Carmella

  18. Hey there! Do you know if they make any plugins to assist with SEO? Aloysia Teador Winni

  19. I visited various sites but the audio quality for audio songs current at this web page is genuinely superb.| Vanda Germain Alesandrini

  20. 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

  21. I am continually searching online for articles that can facilitate me. Thanks! Alidia Costa Sulamith

  22. Thank you so much for sharing your experience with Wealthy Affiliate, and I wish you success with your business! Patty Sanders Luthanen

  23. 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

  24. 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

  25. Yes. So much good stuff here. I especially love practicing gratitude. Selma Balduin Annamarie

  26. Superb, what a website it is! This website gives useful information to us, keep it up. Deb Davis Neille

  27. 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

  28. This is one awesome blog article. Much thanks again. Really Cool. Ingunna Natty Millford

  29. I like it when folks come together and share views. Great site, stick with it! Krystal Lorne Bessie

  30. Everyone loves it when folks get together and share ideas. Great site, stick with it! Marlane Albie Hesky

  31. I like the helpful info you provide in your articles. I will bookmark your weblog and check again here regularly. Betsey Chance Ichabod

  32. 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

  33. Pretty! This was a really wonderful article. Thanks for providing this information. Dale Leonidas Lenhard

  34. excellent issues altogether, you simply gained a new reader. Georgeanne Sherlocke Cown

  35. 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

  36. bardzo ciekawy artykuł, pisz dalej…

  37. Chciałbym zostać praktykantem, podczas gdy ty piszesz, jak mogę zapisać się na blog?

  38. Wszyscy uwielbiają, gdy ludzie spotykają się i dzielą przemyśleniami. Świetna strona internetowa, kontynuuj dobrą pracę!

  39. 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ść!

  40. Ta informacja jest bezcenna. Jak mogę dowiedzieć się więcej?

  41. WOW, właśnie tego szukałem. Przyszedłem tutaj, wyszukując słowo kluczowe

  42. Mój programista próbuje przekonać mnie do przejścia na .net z PHP.

  43. Sprawdzałem wiele twoich wpisów i muszę powiedzieć, że całkiem niezłe rzeczy. Na pewno dodam twoją stronę do zakładek.

  44. Ludovika Brandtr Blakelee pisze:

    Ten projekt jest niesamowity! Oczywiście wiesz, jak zapewnić rozrywkę czytelnikowi.

  45. 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!

  46. Audie Francklyn Elsinore pisze:

    Szacunek dla autora strony, kilka dobrych selektywnych informacji.

  47. Wspaniała strona internetowa. Wiele pomocnych informacji tutaj.

  48. 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.

  49. bardzo dobrze się to czyta merytoryczna zawartosc!

  50. Świetny blog tutaj! Dodatkowo twoja strona www zmienia się bardzo szybko!

  51. 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ć.

  52. Chrystal Gregory Consuelo pisze:

    Zrobiłeś tam kilka fajnych uwag. Poszukałem tematu w Internecie i stwierdziłem, że większość osób zgadza się z twoją witryną.

  53. Melissa Christos Sheehan pisze:

    Lubię czytać post, który skłoni ludzi do myślenia. Dziękuję również za umożliwienie mi komentowania. Melissa Christos Sheehan

  54. W sumie wspaniałe wydania, właśnie otrzymałeś nowego czytelnika. Nicol Niven Breanne

  55. Lubię czytać post, który sprawi, że ludzie myślą. Wielkie dzięki za umożliwienie mi komentowania!

  56. To moja ulubioną tę stronę internetową, wydaje się bardzo korzystna, nieoceniona. Eliza

  57. Dobry artykuł, wspaniała robota, czymaj tak dalej

  58. 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!

  59. 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!

  60. 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.

  61. Bardzo inspirujący artykuł! Cieszę się, że natrafiłem na Twojego bloga

  62. Wspaniałe podejście do tematu. Mam nadzieję, że napiszesz więcej na ten temat

  63. credit card processing business start-up pisze:

    Świetne porady! Chętnie przetestuję to w swoim kodzie.

  64. https://advance-esthetic.us/ipl-laser-machine pisze:

    Świetny artykuł! Bardzo klarowne wyjaśnienia i przykłady

  65. https://advance-esthetic.us/blog/esthetician-and-med-spa-logo-design-ideas pisze:

    Artykuł jest inspirujący! Dzięki niemu mam ochotę eksperymentować i pogłębiać swoją wiedzę na ten temat

  66. เล่นบาคาร่า pisze:

    Twoje przykłady kodu są bardzo pomocne. Pomagają zrozumieć, jak zastosować te koncepcje w praktyce

  67. Twój artykuł zawsze jest pierwszym miejscem, gdzie zaglądam, gdy chcę dowiedzieć się więcej na temat

  68. Masz umiejętność przekazywania informacji w sposób, który sprawia, że każdy może zrozumieć. To niesamowite

  69. Thank you for sharing all these wonderful blogposts.

  70. Zawsze znajduję tutaj wartościowe informacje. Dzięki za to

  71. Ciekawy punkt widzenia. Wartościowe spojrzenie na temat. Świetne praktyczne przykłady. To, co najbardziej lubię w Twoich artykułach

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *