Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Deklarera klasser med hjälp av nyckelordet class enligt följande exempel:
class TestClass
{
// Methods, properties, fields, events, delegates
// and nested classes go here.
}
C# stöder endast enskilt arv. Med andra ord kan en klass ärva implementering endast från en basklass. En klass kan dock implementera mer än ett gränssnitt.
C#-språkreferensen dokumenterar den senaste versionen av C#-språket. Den innehåller även inledande dokumentation för funktioner i offentliga förhandsversioner för den kommande språkversionen.
Dokumentationen identifierar alla funktioner som först introducerades i de tre senaste versionerna av språket eller i aktuella offentliga förhandsversioner.
Tips/Råd
Information om när en funktion först introducerades i C# finns i artikeln om språkversionshistoriken för C#.
Mer information om klasser, gränssnitt och arv finns i artikeln om arv i avsnittet grunderna.
Du kan deklarera klasser direkt inom ett namnområde. Kapsla inte dessa klasser i andra klasser. Du kan göra dessa klasser antingen public eller internal. Klasserna är internalsom standard .
Du kan deklarera klassmedlemmar, inklusive kapslade klasser, som public, protected internal, protected, internal, privateeller private protected. Som standard är privatemedlemmar .
Mer information finns i Åtkomstmodifierare.
Du kan deklarera generiska klasser som har typparametrar. Mer information finns i Allmänna klasser.
En klass kan innehålla deklarationer av följande medlemmar:
- Konstruktörer
- Konstanter
- Fält
- Finalizer-metoder
- Metoder
- Egenskaper
- Indexers
- Operatörer
- Evenemang
- Ombuden
- klasser
- Gränssnitt
- Strukturtyper
- Uppräkningstyper
Exempel
I följande exempel visas hur du deklarerar klassfält, konstruktorer och metoder. Den visar också objektinstansiering och utskrift av instansdata. I det här exemplet deklareras två klasser. Den första klassen, Child, innehåller två privata fält (name och age), två offentliga konstruktorer och en offentlig metod. Den andra klassen, StringTest, innehåller Main.
class Child
{
private int age;
private string name;
// Default constructor:
public Child()
{
name = "N/A";
}
// Constructor:
public Child(string name, int age)
{
this.name = name;
this.age = age;
}
// Printing method:
public void PrintChild()
{
Console.WriteLine("{0}, {1} years old.", name, age);
}
}
class StringTest
{
static void Main()
{
// Create objects by using the new operator:
Child child1 = new Child("Craig", 11);
Child child2 = new Child("Sally", 10);
// Create an object using the default constructor:
Child child3 = new Child();
// Display results:
Console.Write("Child #1: ");
child1.PrintChild();
Console.Write("Child #2: ");
child2.PrintChild();
Console.Write("Child #3: ");
child3.PrintChild();
}
}
/* Output:
Child #1: Craig, 11 years old.
Child #2: Sally, 10 years old.
Child #3: N/A, 0 years old.
*/
Kommentarer
Du kan bara komma åt de privata fälten (name och age) via den offentliga metoden för Child klassen. Du kan till exempel inte skriva ut det underordnade namnet från Main metoden med hjälp av en instruktion som den här:
Console.Write(child1.name); // Error
Det går bara att komma åt privata medlemmar i Child från Main om Main det är en medlem i klassen. Typer som deklareras i en klass utan åtkomstmodifierare är standardvärdet private, så datamedlemmarna i det här exemplet är fortfarande private om nyckelordet tas bort. Slutligen initieras fältet till noll som standard för objektet som skapas med hjälp av den parameterlösa konstruktorn (child3age).
Språkspecifikation för C#
Mer information finns i C#-språkspecifikationen. Språkspecifikationen är den slutgiltiga källan för C#-syntax och -användning.