Wovon ich spreche, ist die Struktur (Struktur) in C#. Beachten Sie, dass sich die Struktur, über die ich hier spreche, nicht auf die Sprachstruktur von C# bezieht Klasse. Im Folgenden werde ich über diese Struktur sprechen.
Das folgende Beispiel beschreibt, wie man eine Struktur mit Attributen, Methoden und einem Feld erstellt und wie man sie verwendet.
000 : // Structsstruct1.cs
001: using System;
002: struct SimpleStruct
003: {
004: PRivate int xval;
005: public int X
006 : {
007: get {
008: return xval;
009: }
010: set {
011: if (value < 100)
012: xval = value ;
013: }
014: }
015: public void DisplayX()
016: {
017: Console.WriteLine("Der gespeicherte Wert ist: {0}", xval );
018: }
019: }
020:
021: Klasse TestClass
022: {
023: public static void Main()
024: {
025: SimpleStruct ss = new SimpleStruct();
026: ss Die Ausgabe dieses Beispiels ist:
Der gespeicherte Wert ist: 5
Aus dem obigen Beispiel können wir sehen, dass Strukturen Und Klassen scheinen tatsächlich gleich zu sein. Wenn Sie Klassen zum Umschreiben dieses Programms verwenden, ist das Ergebnis jedoch offensichtlich, dass zwei identische Dinge nicht zusammen auftreten können Die Klasse ist vom Referenztyp. Auf diese Weise können Sie die Struktur verwenden, um Objekte wie integrierte Typen zu erstellen. Wenn Sie ein neues Schlüsselwort verwenden, um eine Instanz einer Klasse zu erstellen, wird diese zugewiesen Der Heap wird verwendet, um eine Instanz einer Klasse zu erstellen. Wenn eine Instanz einer Struktur zugewiesen wird, wird sie unsere Leistung erheblich verbessern (wie M$ sagte). Nochmals folgendes Beispiel:
001: using System;
002:
004: {
005: public int x;006: }
007:
008: struct TheStruct
009: {
010: public int x;
011: }
012:
013: Klasse TestClass
014: {
015: public static void structtaker(TheStruct s)
016: {
017: s.x = 5;
018: }
019: public static void classtaker(TheClass c)
020: {
021: c.x = 5;
022: }
023: public static void Main()
024: {
025: TheStruct a = new TheStruct();
026: TheClass b = new TheClass();
027: a.x = 1;
028: b.x = 1;
029: structtaker(a );
030: classtaker(b);
031: Console.WriteLine("a.x = {0}", a.x);
032: Console.WriteLine("b.x = {0}", b.x );
033: }
034 : }
Die Ausgabe dieses Beispiels ist:
a.x = 1b.x = 5
Wie aus diesem Beispiel ersichtlich ist , wenn eine Struktur an eine Methode übergeben wird, wird sie nur als Kopie übergeben, und wenn eine Klasse übergeben wird, wird ihr eine Referenz übergeben, also gibt a.x= unverändert 1 aus, aber b.x hat sich geändert Der andere Unterschied ist die Struktur. Sie können ohne new instanziieren, aber Klassen tun dies. Wenn Sie eine Struktur ohne new instanziieren, bleiben alle Felder nicht zugewiesen. Wie Klassen können Strukturen Schnittstellen implementieren haben keine Vererbung. Eine Struktur kann nicht von anderen Klassen erben und kann auch nicht die Basisklasse anderer Klassen sein.
Beispiel 3:
interface IImage
{void Paint( );
}
struct Picture : IImage
{public void Paint()
{// Malcode kommt hier
}
private int x, y, z; // andere Strukturmitglieder
}
Das Obige ist der Inhalt des SUNWEN-Tutorials – C# Advanced (7), bitte beachten Sie weitere verwandte Inhalte der chinesischen PHP-Website (www.php .cn)!