CentrumXP.pl » Witamy
CentrumXP.pl
 
Szukaj
Subskrypcja
Powiadomienie e-mailem o nowościach na CentrumXP.pl:
E-mail: Zapisz
Czy byłbyś zainteresowany mobilną wersją Portalu CentrumXP.mobi dla komórek?

CentrumXP.pl » Microsoft .NET » Kurs C#, cz. II » Dodaj do ulubionych Dodaj do ulubionych   Dodaj do ulubionych Wersja do wydruku

09. Struktury

Autor: Paweł Kruczkowski    Opublikowano: 21 listopada 2006    Odsłon: 26887    »Skomentuj...
Strona:
Zobacz również:

01. Zmienne, stałe, wyrażenia i odstępy w C# 2.0

02. Usuwanie obiektów

03. Przekazywanie parametrów

04. Przeciążanie metod i konstruktorów

05. Hermetyzacja danych

06. Dziedziczenie i polimorfizm

07. Abstrakcja w C#

08. Porozmawiajmy o klasach

10. Interfejsy, część 1

11. Interfejsy, część 2

12. Słowniki w C# 2.0

13. Łańcuchy w C# 2.0

14. Wyrażenia regularne

15. Wyjątki - część I

16. Wyjątki - część II

17. Delegaty i zdarzenia

18. Operacje wejścia - wyjścia cz.1

19. Operacje wejścia - wyjścia cz. 2

20. Atrybuty i mechanizm refleksji

»Uzyskaj pomoc na forum

Tematem dzisiejszego artykułu będą struktury, które są prostym typem definiowanym i często używanym przez programistów. Nauczymy się je prawidłowo definiować i deklarować, a także opowiemy sobie o różnicach występujących między nimi a klasami.

Struktury są bardzo podobne do klas, ponieważ reprezentują pewne struktury danych, które zawierają dane składowe oraz składowe funkcyjne. Innymi słowy, struktura to alternatywa dla klasy, może bowiem zawierać konstruktory, właściwości, metody, pola a nawet typy zagnieżdżone. Jednak w przeciwieństwie do klas, struktur nie możemy dziedziczyć. W strukturach również nie można używać destruktorów. Trzecią istotną różnicę między strukturą a klasą stanowi to, że ta pierwsza jest typem skalarnym, a druga – typem referencyjnym (o typach skalarnych i referencyjnych pisaliśmy na łamach portalu CentrumXP przy okazji omawiania sposobu przekazywania parametrów w języku C# 2.0).

Ta trzecia różnica ma ogromne znaczenie. Dzisiaj bowiem znamy różnicę między typami referencyjnymi a skalarami, dlatego też fakt, że struktury powinniśmy używać jedynie w przypadku małych i prostych typów nie jest dla nas żadnym zaskoczeniem. Mówiąc inaczej, struktury są przydatne do reprezentowania obiektów, które nie wymagają współpracy z typami referencyjnymi.

Struktury definiujemy niemal identycznie jak klasy:

[atrybuty] [modyfikatory dostępu] struct identyfikator [:interfejsy]

{
                składowe struktury
}

Do definicji struktur używamy słowa kluczowego: struct. Jedyną dla nas nowością w powyższym zapisie jest pojęcie interfejsów. Są one pewną alternatywą dla klas abstrakcyjnych (za tydzień opowiemy sobie szerzej o interfejsach).

Tymczasem napiszmy pierwszy program, w którym zdefiniujemy i użyjemy strukturę:

public struct Zwierzeta
{
    private string zwierzak1;
    private string zwierzak2;
 
    public Zwierzeta(string zwierzak1, string zwierzak2)
    {
        this.zwierzak1 = zwierzak1;
        this.zwierzak2 = zwierzak2;
    }
 
    public string Zwierzak1
    {
        get { return zwierzak1; }
        set { zwierzak1 = value; }
    }
 
    public string Zwierzak2
    {
        get { return zwierzak2; }
        set { zwierzak2 = value; }
    }
 
    public override string ToString()
    {
        return (String.Format("{0} oraz {1}", zwierzak1, zwierzak2));
    }
}
 
public class MojeZwierzeta
{
    public void MojaMetoda(Zwierzeta z)
    {
        z.Zwierzak1 = "pies";
        z.Zwierzak2 = "gołąb";
        System.Console.WriteLine("Moje ulubione zwierzaki to: {0}.", z);
    }
}
class Glowna
{
    static void Main()
    {
        Zwierzeta z = new Zwierzeta("kot", "kuna");
        System.Console.WriteLine("Nie lubię takich zwierzaków jak: {0}.", z);
        MojeZwierzeta mz = new MojeZwierzeta();
        mz.MojaMetoda(z);
        System.Console.WriteLine("Nie jest fajny: {0}.", z);
    }
}

Podobnie jak w przypadku klasy, aby stworzyć egzemplarz struktury należy użyć słowa kluczowego new:


1 2 3 4 5 Dalej» 

Aktualna ocena to: 4

Oceń artykuł...
Porażka Kiepski Taki Sobie Dobry Super!


Tagi:  

A teraz:    Dodaj do ulubionych Dodaj do ulubionych    Wydrukuj Wydrukuj    Wyślij link znajomemu Wyślij link znajomemu    Skomentuj Skomentuj

Komentarze do 09. Struktury

Dodaj komentarz»

ja 26 maja 2008, 14:36

tyle co umiałem to zrozumiałem - po co ta zabawa z tym ToString()

camillos 16 lipca 2008, 10:25

Ja nie wiem po co w metodzie ToString() tak dziwnie piszą: String.Format("coś tam") Po co to w ogóle jest?

KA 9 listopada 2008, 21:44

Co do kwestii merytorycznej artykułu, niestety w kodzie jest błąd, nie został on uaktualniony o ptaki. 
Co do ToString() jest to funkcja, która w klasie/strukturze Zwierzęta w sposób specjalny formatuje przekazane argumenty np. "arg1" i "arg2" będzie "arg1 oraz arg2". Metoda ToString() jest zawsze wywoływana, gdy chcemy coś wyświetlić na konosoli, dlatego nie trzeba dopisywać słowa "oraz". 

loop 18 stycznia 2010, 15:24

mogły by być nazwy właściwości parametry w konstruktorze i agrument w strukturze ponazywane w bardziej różniący się sposób poniewarz zwierzak1, zwierzak1 i Zwierzak1 troche jest uciążliwe w czytaniu i zrozumieniu co jest co, poprostu mało czytelne


Dodaj swój komentarz

»Zasady udzielania komentarzy

Autor:  
Komentarz:
Dodaj komentarz
© 2009 Onex Group
Onex Group O Onex Group  |  O CentrumXP.pl  |  Kontakt  |  Reklama
Nasze serwisy: CentrumXP.plSklep on-line  |  Komputer w firmie  |  XboxSpot.pl  |  Live Blog  |  Jama MastahaDevelopers.pl