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

C#-Struktur

C#-Struktur

In diesem Tutorial lernen Sie Strukturen in C# anhand von Beispielen kennen.

Die Struktur (struct) ist wie eine Klasse in C#, die zum Speichern von Daten verwendet wird. Im Gegensatz zu Klassen ist eine Struktur jedoch ein Werttyp.

Angenommen, wir möchten den Namen und das Alter einer Person speichern. Wir können zwei Variablen erstellen:name und Alter und Wert speichern.

Angenommen, wir möchten dieselben Informationen von mehreren Personen speichern.

In diesem Fall kann das Erstellen von Variablen für eine einzelne Person eine mühsame Aufgabe sein. Um dies zu umgehen, können wir eine Struktur erstellen, die name speichert und Alter . Nun kann diese Struktur für jede Person verwendet werden.


Struktur in C# definieren

In C# verwenden wir den struct Schlüsselwort, um eine Struktur zu definieren. Zum Beispiel

struct Employee  {
  public int id;
}

Hier, id ist ein Feld innerhalb der Struktur. Eine Struktur kann auch Methoden, Indexer usw. enthalten.


Strukturvariable deklarieren

Bevor wir eine Struktur verwenden, müssen wir zuerst eine Strukturvariable erstellen. Wir verwenden einen Strukturnamen mit einer Variablen, um eine Strukturvariable zu deklarieren. Zum Beispiel

struct Employee {
  public int id;
}
...

// declare emp of struct Employee
Employee emp;

Im obigen Beispiel haben wir eine Struktur namens Employee erstellt . Hier haben wir eine Variable emp deklariert der Struktur Employee .


Zugriff auf C#-Struktur

Wir verwenden die Strukturvariable zusammen mit . Operator für den Zugriff auf Mitglieder einer Struktur. Zum Beispiel

struct Employee {
  public int id;
}
... 
// declare emp of struct Employee
Employee emp;

// access member of struct      
emp.id = 1;

Hier haben wir die Variable emp verwendet einer Struktur Employee mit . -Operator, um auf Mitglieder des Employee zuzugreifen .

emp.id = 1;

Dadurch wird auf die id zugegriffen Feld der Struktur Employee .

Hinweis :Primitive Datentypen wie int , bool , float sind vordefinierte Strukturen in C#.


Beispiel:C#-Struktur

using System;
namespace CsharpStruct {
 
  // defining struct
  struct Employee {
    public int id;

    public void getId(int id) {
      Console.WriteLine("Employee Id: " + id);
    }
  }
 
  class Program {
    static void Main(string[] args) {
 
      // declare emp of struct Employee
      Employee emp;
      
      // accesses and sets struct field
      emp.id = 1;

      // accesses struct methods
      emp.getId(emp.id);

      Console.ReadLine();
    }
  }
}

Ausgabe

Employee Id: 1

Im obigen Programm haben wir eine Struktur namens Employee erstellt . Es enthält ein Feld id und eine Methode getId() .

Innerhalb des Programms Klasse haben wir eine Variable emp deklariert der Struktur Employee . Wir haben dann den emp verwendet Variable für den Zugriff auf Felder und Methoden der Klasse.

Hinweis :Wir können eine Struktur auch mit new instanziieren Stichwort. Zum Beispiel

Employee emp = new Employee();

Hier ruft diese Zeile den parameterlosen Konstruktor der Struktur auf und initialisiert alle Mitglieder mit Standardwerten.


Konstruktoren in C#-Struktur

In C# kann eine Struktur auch Konstruktoren enthalten. Zum Beispiel

struct Employee {

  public int id;

  // constructor 
  public Employee(int employeeId) {
   id = employeeId
  }
}

Hier haben wir einen parametrisierten Konstruktor Employee() erstellt mit dem Parameter employeeId .

Hinweis :Wir können keine parameterlosen Konstruktoren in C#-Version 9.0 oder darunter erstellen.


Beispiel:Konstruktor in C#-Strukturen

using System;
namespace CsharpStruct {
 
  // defining struct
  struct Employee {
    public int id;
    
    public string name;

    // parameterized constructor
    public Employee(int employeeId, string employeeName) {
   
      id = employeeId;
      name = employeeName;
    }
  }
 
  class Program {
    static void Main(string[] args) {
 
      // calls constructor of struct
      Employee emp = new Employee(1, "Brian");

      Console.WriteLine("Employee Name: " + emp.name);
      Console.WriteLine("Employee Id: " + emp.id);

      Console.ReadLine();
    }
  }
}

Ausgabe

Employee Name: Brian
Employee Id: 1

Im obigen Beispiel haben wir einen parametrisierten Konstruktor innerhalb von Employee erstellt Struktur. Innerhalb des Konstruktors haben wir die Werte von Feldern zugewiesen:id und name .

Beachten Sie die Zeile,

Employee emp = new Employee(1, "Brian");

Wie in C#-Klassen verwenden wir den new Schlüsselwort zum Aufrufen des Konstruktors. Hier, 1 und "Brian" sind Argumente, die an den Konstruktor übergeben werden, wo sie den Parametern employeeID zugewiesen werden und Mitarbeitername bzw."

Hinweis :Wir müssen den Wert für jedes Feld der Struktur innerhalb des parametrisierten Konstruktors zuweisen. Zum Beispiel

// error code
public Employee(int employeeID, employeeName) {
  id = employeeID;
}

Hier haben wir den Wert für name nicht vergeben aufstellen. Der Code generiert also einen Fehler.


Eigenschaften in C#-Struktur

Wir können auch Eigenschaften innerhalb einer C#-Struktur verwenden. Zum Beispiel

using System;
namespace CsharpStruct {
 
  // defining struct
  struct Employee {
    public int id;
    
    // creates property
    public int Id {

      // returns id field
      get {
        return id;
      }

      // sets id field
      set {
        id = value;
      }
    }
  }
 
  class Program {
    static void Main(string[] args) {
 
      // calls the constructor of struct
      Employee emp = new Employee();

      emp.Id = 1;
      Console.WriteLine("Employee Id: " + emp.Id);

      Console.ReadLine();

    }
  }
}

Ausgabe

Employee Id: 1

Im obigen Beispiel haben wir Id -Eigenschaft innerhalb von Employee Struktur.

Das get Methode gibt die id zurück -Feld und das set Methode weist den Wert der id zu Feld.


Unterschied zwischen Klasse und Struktur in C#

In C# sehen Klassen und Strukturen ähnlich aus. Es gibt jedoch einige Unterschiede zwischen ihnen.

Eine Klasse ist ein Referenztyp, während eine Struktur ein Werttyp ist. Zum Beispiel

using System;
namespace CsharpStruct {
 
  // defining class
  class Employee {
    public string name;

  }
 
  class Program {
    static void Main(string[] args) {

      Employee emp1 = new Employee();
      emp1.name = "John";

      // assign emp1 to emp2
      Employee emp2 = emp1;
      emp2.name = "Ed";
      Console.WriteLine("Employee1 name: " + emp1.name);

      Console.ReadLine();
    }
  }
}

Ausgabe

Employee1 name: Ed

Im obigen Beispiel haben wir den Wert emp1 zugewiesen zu emp2 . Die emp2 Objekt verweist auf dasselbe Objekt wie emp1 . Also ein Update in emp2 aktualisiert den Wert von emp1 automatisch.

Aus diesem Grund ist eine Klasse ein Referenztyp .

Im Gegensatz zu Klassen wird, wenn wir eine Strukturvariable einer anderen zuweisen, der Wert der Struktur in die zugewiesene Variable kopiert. Das Aktualisieren einer Strukturvariablen wirkt sich also nicht auf die andere aus. Zum Beispiel

using System;
namespace CsharpStruct {
 
  // defining struct
  struct Employee {
    public string name;

  }
 
  class Program {
    static void Main(string[] args) {

      Employee emp1 = new Employee();
      emp1.name = "John";

      // assign emp1 to emp2
      Employee emp2 = emp1;
      emp2.name = "Ed";
      Console.WriteLine("Employee1 name: " + emp1.name);
      
      Console.ReadLine();
    }
  }
}

Ausgabe

Employee1 name: John

Wenn wir den Wert von emp1 zuweisen zu emp2 , ein neuer Wert emp2 geschaffen. Hier der Wert von emp1 wird nach emp2 kopiert . Wechseln Sie also in emp2 wirkt sich nicht auf emp1 aus .

Aus diesem Grund ist struct ein Werttyp .

Darüber hinaus ist die Vererbung in den Structs nicht möglich, während dies ein wichtiges Merkmal der C#-Klassen ist.


C Sprache

  1. C-Struktur
  2. C-Strukturen und Zeiger
  3. C Struktur und Funktion
  4. Wie man in der wettbewerbsorientierten „Zukunft der Arbeit“ nicht verliert
  5. C++-Struktur mit Beispiel
  6. Warum es an der Zeit ist, die Mitarbeiterplanung zu verbessern
  7. Um das Risiko zu reduzieren, sollten Sie die Hintergrundinformationen der Mitarbeiter erneut überprüfen
  8. Vier Wege zur Stärkung des Mitarbeiterengagements inmitten von COVID-19
  9. DVIRC begrüßt neue Mitarbeiter und befördert geschätzte Mitarbeiter
  10. Eine aufregende neue Technologiekategorie:Employee Productivity Analytics