Przejdź do treści stopki
Iron Academy Logo
Naucz się C#
Naucz się C#

Inne Kategorie

Zrozumienie tablic w C#

Layla Porter
21m 53s

Tablice w C# są fundamentalną strukturą danych, która umożliwia programistom przechowywanie zbioru elementów tego samego typu w ciągłych lokalizacjach w pamięci. Tablice mogą być jednowymiarowe, wielowymiarowe lub zagnieżdżone.

Ten artykuł o tablicach w C# jest inspirowany edukacyjnym wideo Layli Porter, "C# dla początkujących Część 5 - Tablice i więcej pętli." W swoim wideo Layla wyjaśnia podstawy tablic i wprowadza więcej technik pętli w C#, wyposażając widzów w niezbędne umiejętności do efektywnego zarządzania kolekcjami i przechodzenia przez dane.

Rozumienie Tablic

Layla zaczyna od wyjaśnienia tablic jako kolekcji o stałej długości w C#. W przeciwieństwie do niektórych innych języków programowania, w których tablice mogą zmieniać rozmiar dynamicznie, tablice w C# są niezmienne po utworzeniu. Oznacza to, że ich rozmiar nie może być zmieniony po inicjalizacji z powodu ograniczeń przydziału pamięci.

Prosta interakcja z konsolą: Wybór ulubionego sera

W poniższym kodzie, w przeciwieństwie do tablic, Layla (1:50) najpierw demonstruje, jak użytkownik może zostać przedstawiony z listą elementów, z której może wybrać.

Console.WriteLine("Hello, what is your favourite cheese from this list?");
Console.WriteLine("1. Stilton");
Console.WriteLine("2. Cheddar");
Console.WriteLine("3. Pineapple");
Console.WriteLine("4. Brie");
var favouriteCheese = Console.ReadLine();
Console.WriteLine($"Here is a lump of {favouriteCheese} cheese!");
Console.WriteLine("Hello, what is your favourite cheese from this list?");
Console.WriteLine("1. Stilton");
Console.WriteLine("2. Cheddar");
Console.WriteLine("3. Pineapple");
Console.WriteLine("4. Brie");
var favouriteCheese = Console.ReadLine();
Console.WriteLine($"Here is a lump of {favouriteCheese} cheese!");

Ten kod najpierw używa Console.WriteLine, aby wydrukować wiadomość w konsoli, która pyta użytkownika, jaki jest jego ulubiony ser. Następnie używa Console.WriteLine cztery razy, aby wydrukować listę serów w konsoli. Kod następnie używa Console.ReadLine, aby odczytać dane wejściowe użytkownika z konsoli i przechowuje je w zmiennej favouriteCheese. Na koniec kod używa ponownie Console.WriteLine, aby wydrukować wiadomość w konsoli, która zawiera ulubiony ser użytkownika.

Layla, w 2:04, wykonuje ten kod, aby pokazać, jak to działa:

Understanding Csharp Arrays 1 related to Prosta interakcja z konsolą: Wybór ulubionego sera

Deklaracja tablicy - Inicjalizacja tablicy

Na początek Layla demonstruje, jak zadeklarować i zainicjalizować tablicę łańcuchów, w tym przypadku listę serów, które były pierwotnie prezentowane użytkownikowi jako menu. Przedstawia składnię definiowania jednowymiarowej tablicy (2:30) i wypełniania jej początkowymi wartościami za pomocą nawiasów klamrowych (2:54).

string[] cheeses = { "Brie", "Cheddar", "Stilton", "Gouda" };
string[] cheeses = { "Brie", "Cheddar", "Stilton", "Gouda" };

Podkreśla znaczenie indeksowania zaczynającego od zera w tablicach, gdzie pierwszy element w jednowymiarowej tablicy jest dostępny przy użyciu indeksu 0. Następnie Layla pokazuje, jak iterować po tablicach, używając pętli for. Ta struktura pętli jest kluczowa w programowaniu, ponieważ pozwala na wielokrotne wykonywanie kodu na podstawie określonego warunku.

Implementacja Pętli

Przechodząc do pętli, Layla wprowadza pętlę for z jej trzema niezbędnymi składnikami: inicjalizatorem, warunkiem i iteratorem. Ta pętla jest używana do iteracji po elementach tablicy na podstawie jej długości.

for (int i = 0; i < cheeses.Length; i++)
{
    Console.WriteLine(cheeses[i]);
}
for (int i = 0; i < cheeses.Length; i++)
{
    Console.WriteLine(cheeses[i]);
}

Podkreśla, że cheeses.Length zwraca liczbę elementów w tablicy, co gwarantuje, że pętla iteruje precyzyjnie przez każdy element. Zmienna i działa jako zmienna indeksu do iteracji po indeksach. To skutecznie wypisuje pojedyncze elementy tablicy bez kilkukrotnego pisania metody Console.WriteLine, jak pokazano powyżej, bez dostępu do elementów tablicy. Layla, w 6:17, uruchamia aplikację, aby pokazać, że wynik tej pętli for jest dokładnie taki sam jak w poprzednim przykładzie:

Understanding Csharp Arrays 2 related to Implementacja Pętli

Porządkowanie i Niezmienność

Layla wyjaśnia zaletę porządkowania, a następnie o 7:17 demonstruje sortowanie tablicy alfabetycznie, używając metody Sort, ostrzegając, że sortowanie tak naprawdę tworzy nową tablicę za kulisami z powodu niezmienności tablic w C#. Jest to kluczowy punkt do zrozumieniuiuiuiuia, jak manipulacja danymi wpływa na pamięć i wydajność.

Array.Sort(cheeses);
Array.Sort(cheeses);

Pokazuje również, jak poszczególne elementy w tablicy mogą być modyfikowane bezpośrednio bez tworzenia nowej tablicy (8:10), ilustrując zmienność w niezmienności. Indeks elementu do zamiany jest podawany w nawiasach kwadratowych po zmiennej tablicy cheeses:

cheeses[0] = "Roquefort";
cheeses[0] = "Roquefort";

To zastąpi element tablicy "Brie" na indeksie 0 nową wartością "Roquefort".

Aktualizacja Listy Serów: Obsługa nowych wpisów (8:46)

Layla wyjaśnia, jak możemy dodawać wartości do istniejącej listy. Obejmuje to pobranie istniejących wartości i nowej wartości, utworzenie nowej tablicy, która zawiera oba i zaktualizowanie naszego odwołania, aby wskazywała na tę nową tablicę. Poniższy kod pokazuje, jak to działa:

var favouriteCheese = Console.ReadLine();

bool containsFavourite = false;

foreach (var cheese in cheeses)
{
    if (favouriteCheese == cheese)
    {
        containsFavourite = true;
    }
}

if (!containsFavourite)
{
    cheeses = cheeses.Append(favouriteCheese).ToArray();
}
var favouriteCheese = Console.ReadLine();

bool containsFavourite = false;

foreach (var cheese in cheeses)
{
    if (favouriteCheese == cheese)
    {
        containsFavourite = true;
    }
}

if (!containsFavourite)
{
    cheeses = cheeses.Append(favouriteCheese).ToArray();
}

Ten przykład pokazuje ten proces w prosty sposób z wykorzystaniem podstawowych operacji na tablicach i pętli foreach, aby sprawdzić, czy ser jest już na liście. Jeśli nie, Layla dodaje go (13:33) do tablicy, używając metody Append z System.Linq.

Layla, w 13:50, mówi, że kod zawiera błędy, ponieważ cheeses i rezultat Append to różne typy. Append zwraca IEnumerable, interfejs dla kolekcji. Aby to naprawić, konwertujemy IEnumerable na tablicę, używając metody ToArray(), a następnie przypisujemy ją z powrotem do cheeses. Layla zauważa, że żółta falista linia to ostrzeżenie kompilatora wskazujące na potencjalne problemy, takie jak to, że favouriteCheese jest null, ale pomijamy kontrole bezpieczeństwa w tym demo.

Aktualizacja i Drukowanie Listy Serów

Layla wyjaśnia, że kiedy dodamy nowy element do naszej tablicy, powinniśmy wydrukować zaktualizowaną listę na ekranie. Aby to osiągnąć, używamy pętli for, drukując każdy element wraz z jego indeksem, aby pokazać, że tablica zawiera teraz więcej elementów.

Console.WriteLine("The new list:");

for (var i = 0; i < cheeses.Length; i++)
{
    Console.WriteLine(i + " " + cheeses[i]);
}

Console.WriteLine($"Here is a lump of {favouriteCheese} cheese!");
Console.WriteLine("The new list:");

for (var i = 0; i < cheeses.Length; i++)
{
    Console.WriteLine(i + " " + cheeses[i]);
}

Console.WriteLine($"Here is a lump of {favouriteCheese} cheese!");

Pokazuje to dynamiczną naturę tablic w C#, pokazując, jak dodawać nowe elementy i weryfikować aktualizację poprzez drukowanie zawartości tablicy.

Layla następnie uruchamia aplikację, aby wyświetlić nowo dodany ser (15:19):

Understanding Csharp Arrays 3 related to Aktualizacja i Drukowanie Listy Serów

Wzbogacenie z tablicami obiektów

Aby poszerzyć rozumienie, Layla wprowadza tablice obiektów, tworząc klasę Cheese z właściwościami dla Name i Strength (16:14). Następnie zastępuje listę łańcuchów, aby stworzyć tablicę obiektów Cheese i demonstruje, jak uzyskiwać dostęp do właściwości w ramach iteracji (17:46).

class Cheese
{
    public string Name { get; set; }
    public int Strength { get; set; }

    public Cheese(string name, int strength)
    {
        Name = name;
        Strength = strength;
    }
}

Cheese[] cheeses = new Cheese[]
{
    new Cheese("Stilton", 3),
    new Cheese("Cheddar", 2),
    new Cheese("Pineapple", 1),
    new Cheese("Brie", 2)
};

cheeses[0] = new Cheese("Roquefort", 4);
class Cheese
{
    public string Name { get; set; }
    public int Strength { get; set; }

    public Cheese(string name, int strength)
    {
        Name = name;
        Strength = strength;
    }
}

Cheese[] cheeses = new Cheese[]
{
    new Cheese("Stilton", 3),
    new Cheese("Cheddar", 2),
    new Cheese("Pineapple", 1),
    new Cheese("Brie", 2)
};

cheeses[0] = new Cheese("Roquefort", 4);

Ten segment zapewnia podstawowe zrozumieniuiuiuiuie, jak tablice mogą kapsułkować złożone struktury danych, oferując elastyczność i moc w programowaniu.

Wykorzystanie obiektu ser w pętlach

Layla teraz pokazuje, jak drukować wszystkie elementy zaktualizowanej listy na ekranie. W tym scenariuszu każdy ser reprezentowany jest jako obiekt z właściwościami Name i Strength. Pętla for iteruje przez tę tablicę obiektów Cheese, gdzie każda iteracja obsługuje bezpośrednio jeden element tablicy.

for (int i = 0; i < cheeses.Length; i++)
{
    Console.WriteLine($"{cheeses[i].Name}, Strength: {cheeses[i].Strength}");
}
for (int i = 0; i < cheeses.Length; i++)
{
    Console.WriteLine($"{cheeses[i].Name}, Strength: {cheeses[i].Strength}");
}

Ta pętla upraszcza dostęp do właściwości obiektów Cheese przechowywanych w tablicy cheeses. Layla, w 20:34, uruchamia program i wynik jest następujący:

Understanding Csharp Arrays 4 related to Wykorzystanie obiektu ser w pętlach

Wnioski

Podsumowując, samouczek Layli Porter na temat tablic i pętli w C# zapewnia solidną podstawę dla początkujących, aby zrozumieć te istotne koncepcje. Dzięki opanowaniu tablic i różnych konstrukcji pętli, aspirujący deweloperzy C# mogą efektywnie manipulować strukturami danych i iterować przez kolekcje w swoich programach. Zrozumienie tych podstaw jest kluczowe do budowania bardziej skomplikówanych aplikacji i dalszego eksplorowania aspektów programowania w C#.

Podążając za przykładami i objaśnieniami Layli, początkujący mogą nabrać pewności w efektywnym używaniu tablic i pętli w swoich projektach C#. Aby uzyskać bardziej dogłębną wiedzę o kolekcjach C# i zaawansowanych tablicach dwuwymiarowych i zagnieżdżonych, uczniowie są zachęcani do eksplorowania kolejnych samouczków i praktycznych ćwiczeń.

Hero Worlddot related to Zrozumienie tablic w C#
Hero Affiliate related to Zrozumienie tablic w C#

Zarabiaj więcej, dzieląc się tym, co kochasz

Tworzysz treści dla deweloperów pracujących z .NET, C#, Java, Python, czy Node.js? Zamień swoją wiedzę specjalistyczną na dodatkowy dochód!

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie