codestory

Die Anleitung zu C# Structure

  1. Was ist Struct ?
  2. Der Vergleich zwischn Struct und die Klasse
  3. Der Constructor vom Struct
  4. Die Methode und das Attribut vom Struct
  5. Indexer und Event vom Struct

1. Was ist Struct ?

Im C# ist Struct (die Struktur) eine besondere Wert. Er erstellt eine Variable um viele einzelnen aber relativ mit einander Wert zu speichern.
Ein Beispiel: Die Information über ein Arbeitnehmer schließt ein:
  • Die Code des Arbeitnehmer
  • Der Name des Arbeitnehmer
  • Die Funktion
Sie können 3 Variable erstellen um die Information des Arbeitnehmer zu speichern. Aber Sie können ein Struct erstellen um alle 3 oben gemeinten Information in einer einzigen Variable zu speichern.
C# benutzt das Schlüsselwort struct um ein Struct anzumelden
Employee.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSharpStructureTutorial
{
    struct Employee
    {
        public string empNumber;
        public string empName;
        public string position;
        public Employee(string empNumber, string empName, string position)
        {
            this.empNumber = empNumber;
            this.empName = empName;
            this.position = position;
        }
    }
}
Das Beispiel über die Benutzung von Struct:
EmployeeTest.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSharpStructureTutorial
{
    class EmployeeTest
    {
        public static void Main(string[] args)
        {
            Employee john = new Employee("E01","John", "CLERK");
            Console.WriteLine("Emp Number: " + john.empNumber);
            Console.WriteLine("Emp Name: " + john.empName);
            Console.WriteLine("Emp Position: " + john.position);
            Console.Read();
        }
    }
}
Das Beispiel durchführen:
Emp Number: E01
Emp Name: John
Emp Position: CLECK

2. Der Vergleich zwischn Struct und die Klasse

Struct ist normalerweise benutzt für die Erstellung eines Objekt zur Speicherung der Wert, inszwischen werden die Klasse mehr umfangreich verwendet
  • Struct darf kein Inheritance haben. Sie kann aus einer Klasse oder ein Struct nicht ausweitern.
  • Struct darf die Interface implementieren (implements)
Ein der üblichen Struct im C# ist DateTime. Er bezeichnet das Datum und die Zeit. Sie können das Datum und die Zeit im C# mehr sehen bei ...:
Wenn Struct wie einen Parameter in einer Methode erscheint, wird er als eine Wert übertragen. Indem wenn die Klasse wie einen Parameter in einer Methode erscheint, wird er als Reference übertragen
MyClass.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSharpStructureTutorial
{
    class MyClass
    {
       public string name = "Abc";
       public MyClass(string name)
       {
           this.name = name;
       }
    }
}
MyStruct.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSharpStructureTutorial
{
    struct MyStruct
    {
       public string name;

       public MyStruct(string name)
       {
           this.name = name;
       }
    }
}
MyTest.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSharpStructureTutorial
{
    class MyTest
    {
        private static void passToMe(MyClass myClass, MyStruct myStruct)
        {
            // Die Wert des Feld name ändern.
            myClass.name = "New Name";
 
            // Die Wert des Feld name ändern.
            myStruct.name = "New Name";
        } 
        public static void Main(string[] args)  
        {
            MyClass myClass = new MyClass("Abc");
            MyStruct myStruct = new MyStruct("Abc");

            Console.WriteLine("Before pass to method");
            Console.WriteLine("myClass.name = " + myClass.name);// Abc
            Console.WriteLine("myStruct.name = " + myStruct.name);// Abc 
            Console.WriteLine("Pass to method");

            // 'myStruct', das in der Methode übertragen, ist eine Kopie.
            // (Das ist kein originales Objekt).
            passToMe(myClass, myStruct); 
            Console.WriteLine("myClass.name = " + myClass.name); // New Name
            Console.WriteLine("myStruct.name = " + myStruct.name);// Abc 
            Console.Read(); 
        } 
    } 
}
Das Beispiel durchführen
Before pass to method
myClass.name = Abc
myStruct.name = Abc
Pass to method
myClass.name = New Name
myStruct.name = Abc

3. Der Constructor vom Struct

Struct kann die Constructor haben aber hat kein Destructor.
Unten sind einige Beachtung mit dem Constructor:
  • Sie können ein Default Constructor (ohne den Paramter) für Struct nicht schreiben.
  • Im Constructor sollen Sie die Werte für alle Field der Struct zuweisen

4. Die Methode und das Attribut vom Struct

Struct kann die Methode und Eigenschaften (Property) haben. Und weil Struct kein Inheritance hat, müssen seine Property nicht abstrakt (abstract) sein
Book.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSharpStructureTutorial
{
    struct Book
    {
        private string title;
        private string author;

        // Property
        public string Title
        {
            get
            {
                return this.title;
            }
            set
            {
                this.title = value;
            }
        }
        // Property
        public string Author
        {
            get
            {
                return this.author;
            }
        }
        // Constructor.
        public Book(string title, string author)
        {
            this.title = title;
            this.author = author;
        }
        // Method.
        public string GetInfo()
        {
            return "Book Title: " + this.title + ", Author: " + this.author;
        }
    }
}

5. Indexer und Event vom Struct

Struct kann Indexer und Event haben. Sie können mehr über Indexer und Event bei... sehen: