Klasy i strukturach (Podręcznik programowania C#)
Klasy i strukturach są dwa podstawowe konstrukcje wspólnego systemu typu w.NET Framework.Każda z nich jest zasadniczo struktura danych, która hermetyzuje zestawu danych i zachowań, które należą razem jako jednostki logicznej.Dane i zachowania są członków z klasy lub struktury, i zawierają metody, właściwości i zdarzeń i itd., wymienionych w dalszej części tego tematu.
Deklaracja klasy lub struktury przypomina planu, który jest używany do tworzenia wystąpień lub obiektów w czasie wykonywania.W przypadku zdefiniowania klasy lub struct o nazwie Person, Person jest nazwą typu.Jeśli deklaruje i Zainicjuj zmienną p typu Person, p jest określane jako obiektu lub wystąpienie Person.Wiele wystąpień tego samego Person może zostać utworzony typ, a każde wystąpienie może mieć różne wartości w polach i właściwości.
Klasa jest typem odwołania.Po utworzeniu obiektu klasy, zmiennej, do którego przypisano obiekt posiada tylko odwołanie do tej pamięci.Odwołanie do obiektu jest przypisany do nowej zmiennej, Nowa zmienna odnosi się do obiektu oryginalnego.Zmiany wprowadzone za pośrednictwem jednej zmiennej są odzwierciedlane w innej zmiennej, ponieważ zarówno odnoszą się do tych samych danych.
Struct jest typ wartości.Podczas tworzenia struktury zmienną, do której przypisany jest struktura posiada struct rzeczywiste dane.Gdy struktura jest przypisany do nowej zmiennej, jest kopiowany.Nowa zmienna i pierwotnej zmiennej zatem zawierać dwie oddzielne kopie tych samych danych.Zmiany wprowadzone w jednej kopii nie wpływają na drugi egzemplarz.
Ogólnie rzecz biorąc klasy są używane do modelu bardziej złożonych zachowanie lub dane, które mają być zmodyfikowane po utworzeniu obiektu klasy.Najlepiej nadaje się dla struktur danych w małych, które zawierają głównie dane nie mają być zmodyfikowane po utworzeniu struktura struktur.
Aby uzyskać więcej informacji, zobacz Klasy (Podręcznik programowania C#), Obiekty (Podręcznik programowania C#), i Strukturach (Podręcznik programowania C#).
Przykład
W poniższym przykładzie MyCustomClass jest zdefiniowana z trzech członków na najwyższym poziomie z ProgrammingGuide obszaru nazw.Wystąpienie (obiekt) MyCustomClass jest tworzony w Main metodę w Program klasy i metody obiektu i właściwości są dostępne przy użyciu notacji z kropką.
namespace ProgrammingGuide
{
// Class definition.
public class MyCustomClass
{
// Class members:
// Property.
public int Number { get; set; }
// Method.
public int Multiply(int num)
{
return num * Number;
}
// Instance Constructor.
public MyCustomClass()
{
Number = 0;
}
}
// Another class definition. This one contains
// the Main method, the entry point for the program.
class Program
{
static void Main(string[] args)
{
// Create an object of type MyCustomClass.
MyCustomClass myClass = new MyCustomClass();
// Set the value of a public property.
myClass.Number = 27;
// Call a public method.
int result = myClass.Multiply(4);
}
}
}
Hermetyzacja
Hermetyzacja jest czasami nazywany pierwszego filaru lub zasady Programowanie zorientowane obiektowo.Zgodnie z zasadą hermetyzację klasy lub struktury można określić jak dostępne każdego z członków ma kod poza klasą lub strukturą.Aby ograniczyć możliwość kodowania błędy lub złośliwe oprogramowanie mogą być ukrywane metod i zmiennych, które nie mają być używane z poza klasy lub zestawu.
Aby uzyskać więcej informacji na temat klasy, zobacz Klasy (Podręcznik programowania C#) i Obiekty (Podręcznik programowania C#).
Członkowie
Wszystkie metody, pola, stałe, właściwości i zdarzeń, które muszą być zadeklarowane w obrębie typu; są to tak zwane członków z klasy lub struktury.W języku C# nie ma żadnych zmiennych globalnych ani metod, jak w innych językach.Nawet punkt wejścia programu Main metody, musi być zadeklarowana w klasie lub strukturze.Poniższa lista zawiera wszystkie różne rodzaje elementów członkowskich, które mogą być zadeklarowane w klasie lub strukturze.
Ułatwień dostępu
Niektórych metod i właściwości mają być nazywane lub uzyskać dostęp z poziomu kodu poza klasy lub struct, znane jako Kod klienta.Inne metody i właściwości może być tylko do użytku w klasie lub struct sam.Jest ważne, aby ograniczyć dostępność kodu, tak, aby tylko kod zamierzonego klienta można będą mieli do niego dostępu.Określ, jak dostępne typy sieci i ich członków są kod klienta za pomocą modyfikatorów dostępu publicznych, chronione, wewnętrzny, protected internal, i prywatnego.Dostępność domyślną jest private.Aby uzyskać więcej informacji, zobacz Modyfikatory dostępu (Podręcznik programowania C#).
Dziedziczenie
Klasy (ale nie strukturach) obsługiwały dziedziczenia.Klasa, która pochodzi z innej klasy ( klasy bazowej) zawiera automatycznie wszystkie publiczne, protected i internal członkowie klasy podstawowej, z wyjątkiem jego konstruktory i destruktory.Aby uzyskać więcej informacji, zobacz Dziedziczenie (Podręcznik programowania C#) i Polimorfizm (Podręcznik programowania C#).
Klasy mogą być zadeklarowane jako abstrakcyjna, która oznacza, że jeden lub więcej ich metody mają implementacja nie.Chociaż nie można bezpośrednio utworzyć wystąpienia klasy abstrakcyjnej, może służyć jako klas bazowych do innych klas, które zapewniają Brak implementacji.Klasy mogą być także zadeklarowana jako zamkniętych dziedziczyły innych klas z nich.Aby uzyskać więcej informacji, zobacz Klasy abstrakcyjne i zamkniętych i elementy klas (Podręcznik programowania C#).
Interfejsy
Klasy i strukturach może odziedziczyć wiele interfejsów.Aby dziedziczyć oznacza interfejs, który typ implementuje wszystkie metody zdefiniowane w interfejsie.Aby uzyskać więcej informacji, zobacz Interfejsy (Podręcznik programowania C#).
Typy rodzajowe
Klasy i strukturach może być zdefiniowana przez jeden lub więcej parametrów typu.Kod klienta dostarcza typu podczas tworzenia wystąpienia typu.Na przykład List<T> klasy w System.Collections.Generic obszaru nazw jest zdefiniowana z jednego typu parametru.Kod klienta tworzy instancję List<string> lub List<int> do określenia typu, który będzie zawierać listę.Aby uzyskać więcej informacji, zobacz Generyczne (Podręcznik programowania C#).
Typy statyczne
Klasy (ale nie strukturach) mogą być deklarowane jako statyczne.Klasy statyczne może zawierać tylko elementy statyczne i nie można utworzyć wystąpienia nowe słowo kluczowe.Jedna kopia tej klasy jest ładowany do pamięci podczas ładowania programu i jego członkowie są dostępne za pośrednictwem nazwy klasy.Zarówno klas, jak i strukturach może zawierać elementy statyczne.Aby uzyskać więcej informacji, zobacz Klasy statyczne i elementów klas statycznych (Podręcznik programowania C#).
Zagnieżdżone typy
Klasy lub struktury można zagnieżdżać wewnątrz innej klasy lub struktury.Aby uzyskać więcej informacji, zobacz Zagnieżdżone typy.
Typy częściowe
Klasy, struktury lub metoda w jednym pliku kodu i inną część można zdefiniować w pliku osobnego kodu.Aby uzyskać więcej informacji, zobacz częściowe klasy i metody.
Inicjatory obiektu
Można utworzyć wystąpienia i zainicjować klasy lub struct obiektów i kolekcji obiektów, bez jawnego wywołania konstruktora ich.Aby uzyskać więcej informacji, zobacz Obiektów i kolekcji inicjatorów (Podręcznik programowania C#).
Typy anonimowe
W sytuacjach, gdy nie jest wygodne lub niezbędne do tworzenia nazwanych klasy na przykład gdy są zapełnianie listy z danymi struktur że nie utrzymują lub przekazać do innej metody, należy użyć typy anonimowe.Aby uzyskać więcej informacji, zobacz Typy anonimowe (Podręcznik programowania C#).
Rozszerzenie metody
Można "rozszerzyć" Klasa bez tworzenia klasy pochodnej przez utworzenie oddzielnych typu, w których metody mogą być wywoływane tak, jakby należały one do oryginalnego typu.Aby uzyskać więcej informacji, zobacz Rozszerzenie metody (Podręcznik programowania C#).
Zmienne lokalne niejawnie maszynowy
W ramach metody klasy lub struktury umożliwia wpisywanie niejawny nakazać kompilatorowi, aby ustalić poprawny typ w czasie kompilacji.Aby uzyskać więcej informacji, zobacz Wpisane niejawnie zmiennych lokalnych (C# Programming Guide).
Specyfikacja języka C#
Aby uzyskać więcej informacji, zobacz Specyfikacja języka C#. Specyfikacja języka to najlepsze źródło informacji dotyczących składni i zastosowania języka C#.