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