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

Inne Kategorie

Zrozumienie tablic w C#

[[academy-video-youtube({"vid": "iiDfHgofH8I", "start_time": "0", "title": "Zrozumienie tablic w C#: Spostrzeżenia z wideo Layli Porter na temat tablic i pętli w C#", "creator": "Layla Porter", "length": "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ść do konsoli, która pyta użytkownika, jaki jest jego ulubiony ser. Następnie używa Console.WriteLine cztery razy więcej, aby wydrukować listę serów do konsoli. Kod potem używa Console.ReadLine, aby odczytać dane wejściowe użytkownika z konsoli i przechowuje je w zmiennej favouriteCheese. Na koniec, kod ponownie używa Console.WriteLine, aby wydrukować wiadomość do 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]);
}

Ona, o godz. 4:44, podkreśla, że cheeses.Length podaje liczbę elementów w tablicy, zapewniając, że pętla iteruje dokładnie przez każdy element. Zmiennej i działa jako zmienna indeksu do iteracji przez indeksy. To skutecznie drukuje indywidualne elementy tablicy, bez pisania metody Console.WriteLine wiele razy, 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 korzyść z sortowania, a potem o godz. 7:17, demonstruje sortowanie tablicy alfabetycznie przy użyciu metody Sort, ostrzegając, że sortowanie w rzeczywistości tworzy nową tablicę z powodu niemutowalności tablic w C#. Jest to kluczowy punkt do zrozumienia, 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 zastąpienia jest przekazywany w nawiasach kwadratowych po zmiennej tablicowej 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 proces w prosty sposób, używając podstawowych operacji na tablicach i pętli foreach, aby sprawdzić, czy ser jest już na liście. Jeśli nie, Layla (13:33) dodaje go do tablicy, używając metody Append z System.Linq.

Layla, o godz. 13:50, mówi, że błąd w kodzie występuje, ponieważ cheeses i wynik Append to różne typy. Append zwraca IEnumerable, interfejs dla kolekcji. Aby to naprawić, konwertujemy IEnumerable na tablicę za pomocą metody ToArray(), a następnie przypisujemy z powrotem do cheeses. Layla zauważa, że żółta falista linia to ostrzeżenie kompilatora wskazujące na potencjalne problemy, takie jak favouriteCheese będący nullem, ale ignorujemy kontrole bezpieczeństwa w tym demie.

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ć zrozumienie, Layla wprowadza tablice obiektów, tworząc klasę Cheese z właściwościami dla Name i Strength (16:14). Następnie zamienia listę stringów, aby stworzyć tablicę obiektów Cheese i demonstruje, jak uzyskać dostęp do właściwości w obiektach podczas 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 zrozumienie, 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 jest reprezentowany 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 pojedynczy 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 skomplikowanych 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!

Zespół wsparcia Iron

Jesteśmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwoń do mnie