Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

C#-Structs verstehen: Definition, Verwendung und wesentliche Unterschiede

C#-Structs

Lernen Sie, wie Sie C#-Structs definieren, instanziieren und damit arbeiten – einschließlich Konstruktoren, Eigenschaften und ihren wesentlichen Unterschieden zu Klassen.

In C# funktioniert ein Struct (Struktur) ähnlich wie eine Klasse, ist aber ein Werttyp, was bedeutet, dass es Daten direkt speichert statt einer Referenz.

Angenommen, wir möchten Name und Alter einer Person speichern. Wir könnten zwei Variablen erstellen: name und age und Werte zuweisen.

Wenn wir diese Informationen jedoch für mehrere Personen benötigen, wird das Deklarieren separater Variablen mühsam. Ein Struct, das name und age enthält, lässt uns dasselbe Layout für jede Person wiederverwenden.


Struct in C# definieren

In C# verwenden wir das struct-Schlüsselwort, um ein Struct zu deklarieren. Zum Beispiel:

struct Employee
{
    public int id;
}

Hier ist id ein Feld innerhalb des Structs. Ein Struct kann auch Methoden, Indexer und mehr enthalten.


Struct-Variable deklarieren

Bevor Sie ein Struct verwenden, müssen Sie eine Struct-Variable erstellen. Die Syntax lautet:

struct Employee
{
    public int id;
}

// emp vom Typ Employee deklarieren
Employee emp;

Im Beispiel haben wir ein Struct namens Employee definiert und eine Variable emp dieses Typs deklariert.


Auf C#-Struct zugreifen

Auf Struct-Mitglieder zugreifen Sie mit dem Punktoperator (.):

Employee emp;
emp.id = 1;

Dies weist den Wert 1 dem id-Feld des Employee-Structs zu.

Hinweis: Primitive Typen wie int, bool und float sind in C# vordefinierte Structs.


Beispiel: C#-Struct

using System;

namespace CsharpStruct
{
    // Struct definieren
    struct Employee
    {
        public int id;
        public void getId(int id)
        {
            Console.WriteLine("Mitarbeiter-ID: " + id);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // emp vom Typ Employee deklarieren
            Employee emp;

            // Struct-Feld zugreifen und setzen
            emp.id = 1;

            // Struct-Methode aufrufen
            emp.getId(emp.id);
            Console.ReadLine();
        }
    }
}

Ausgabe

Mitarbeiter-ID: 1

Das Programm erstellt ein Employee-Struct, setzt sein id-Feld und ruft die getId-Methode auf, um es anzuzeigen.

Sie können ein Struct auch mit dem new-Schlüsselwort instanziieren:

Employee emp = new Employee();

Dies ruft den parameterlosen Konstruktor auf und initialisiert alle Felder mit ihren Standardwerten.


Konstruktoren in C#-Structs

Structs können Konstruktoren definieren, um Felder zu initialisieren. Beispiel:

struct Employee
{
    public int id;

    // Konstruktor
    public Employee(int employeeId)
    {
        id = employeeId;
    }
}

Hinweis: Vor C# 10 konnten Structs keine parameterlosen Konstruktoren enthalten.


Beispiel: Konstruktor in C#-Structs

using System;

namespace CsharpStruct
{
    // Struct definieren
    struct Employee
    {
        public int id;
        public string name;

        // Parameterisierter Konstruktor
        public Employee(int employeeId, string employeeName)
        {
            id = employeeId;
            name = employeeName;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // Konstruktor des Structs aufrufen
            Employee emp = new Employee(1, "Brian");
            Console.WriteLine("Mitarbeitername: " + emp.name);
            Console.WriteLine("Mitarbeiter-ID: " + emp.id);
            Console.ReadLine();
        }
    }
}

Ausgabe

Mitarbeitername: Brian
Mitarbeiter-ID: 1

In diesem Beispiel weist der Konstruktor Werte allen Feldern zu. Das Versäumnis, jedes Feld zu initialisieren, führt zu einem Kompilierfehler.


Eigenschaften in C#-Structs

Structs können Eigenschaften für Kapselung bereitstellen. Beispiel:

using System;

namespace CsharpStruct
{
    // Struct definieren
    struct Employee
    {
        public int id;

        // Eigenschaft erstellen
        public int Id
        {
            get { return id; }
            set { id = value; }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Employee emp = new Employee();
            emp.Id = 1;
            Console.WriteLine("Mitarbeiter-ID: " + emp.Id);
            Console.ReadLine();
        }
    }
}

Ausgabe

Mitarbeiter-ID: 1

Hier bietet die Id-Eigenschaft kontrollierten Zugriff auf das id-Feld.


Unterschied zwischen Klasse und Struct in C#

Obwohl Klassen und Structs eine ähnliche Syntax teilen, unterscheiden sie sich grundlegend:

Beispiel für Klassen-Referenzverhalten:

using System;

namespace CsharpStruct
{
    class Employee
    {
        public string name;
    }

    class Program
    {
        static void Main(string[] args)
        {
            Employee emp1 = new Employee();
            emp1.name = "John";
            Employee emp2 = emp1;
            emp2.name = "Ed";
            Console.WriteLine("Mitarbeiter1 Name: " + emp1.name);
            Console.ReadLine();
        }
    }
}

Ausgabe

Mitarbeiter1 Name: Ed

Beispiel für Struct-Wertverhalten:

using System;

namespace CsharpStruct
{
    struct Employee
    {
        public string name;
    }

    class Program
    {
        static void Main(string[] args)
        {
            Employee emp1 = new Employee();
            emp1.name = "John";
            Employee emp2 = emp1;
            emp2.name = "Ed";
            Console.WriteLine("Mitarbeiter1 Name: " + emp1.name);
            Console.ReadLine();
        }
    }
}

Ausgabe

Mitarbeiter1 Name: John

Im Struct-Beispiel erhält emp2 eine Kopie von emp1, sodass Änderungen an emp2 emp1 nicht beeinflussen.

Diese Unterschiede machen Structs ideal für kleine, unveränderliche Datenstrukturen, die von Stapelallokation und Wertsemantik profitieren.

C Sprache

  1. C-Structs meistern: Definition, Variablen, Zugriff & fortgeschrittene Beispiele
  2. C-Structs und Zeiger meistern: Praxisleitfaden
  3. C-Structs: Übergeben, Zurückgeben & Referenz-Handling meistern
  4. Zukunft der Arbeit meistern: Strategien, um Wettbewerb zu schlagen
  5. C++ Structs erklärt mit praktischem Beispiel
  6. Modernes Mitarbeiter-Scheduling: Der Fall für Digitalisierung zur Steigerung von Retention und Produktivität
  7. Arbeitssicherheit erhöhen: Warum regelmäßige Mitarbeiter-Nachprüfungen entscheidend sind
  8. 4 bewährte Strategien zur Stärkung der Mitarbeiterbindung während COVID-19
  9. DVIRC befördert Alan Shell zum Director Lean/CI Services, begrüßt drei Neuzugänge
  10. Mitarbeiter-Produktivitätsanalytik: Insights im IoT-Zeitalter freisetzen