Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

C#-structuur

C#-struct

In deze tutorial leer je aan de hand van voorbeelden over structs in C#.

De struct (structuur) is als een klasse in C# die wordt gebruikt om gegevens op te slaan. In tegenstelling tot klassen is een struct echter een waardetype.

Stel dat we de naam en leeftijd van een persoon willen opslaan. We kunnen twee variabelen maken:naam en leeftijd en winkelwaarde.

Stel echter dat we dezelfde informatie van meerdere mensen willen opslaan.

In dit geval kan het maken van variabelen voor een individuele persoon een vervelende taak zijn. Om dit te verhelpen kunnen we een struct maken die name . opslaat en leeftijd . Nu kan deze structuur voor elke persoon worden gebruikt.


Struct definiëren in C#

In C# gebruiken we de struct trefwoord om een ​​structuur te definiëren. Bijvoorbeeld,

struct Employee  {
  public int id;
}

Hier, id is een veld binnen de structuur. Een struct kan ook methoden, indexers, enz. bevatten.


Structvariabele declareren

Voordat we een struct gebruiken, moeten we eerst een struct-variabele maken. We gebruiken een struct-naam met een variabele om een ​​struct-variabele te declareren. Bijvoorbeeld,

struct Employee {
  public int id;
}
...

// declare emp of struct Employee
Employee emp;

In het bovenstaande voorbeeld hebben we een structuur gemaakt met de naam Employee . Hier hebben we een variabele gedeclareerd emp van de struct Medewerker .


Toegang tot C# struct

We gebruiken de struct-variabele samen met de . operator om toegang te krijgen tot leden van een struc. Bijvoorbeeld,

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

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

Hier hebben we variabele emp . gebruikt van een struct Werknemer met . operator om toegang te krijgen tot leden van de Werknemer .

emp.id = 1;

Dit geeft toegang tot de id veld van struct Medewerker .

Opmerking :Primitieve gegevenstypen zoals int , bool , float zijn voorgedefinieerde structuren in C#.


Voorbeeld:C# Struct

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();
    }
  }
}

Uitvoer

Employee Id: 1

In het bovenstaande programma hebben we een structuur gemaakt met de naam Employee . Het bevat een veld id en een methode getId() .

Binnen het Programma class hebben we een variabele emp gedeclareerd van struct Medewerker . We gebruikten toen de emp variabele om toegang te krijgen tot velden en methoden van de klasse.

Opmerking :We kunnen ook een struct maken met behulp van de new trefwoord. Bijvoorbeeld,

Employee emp = new Employee();

Hier roept deze regel de parameterloze constructor van de struct aan en initialiseert alle leden met standaardwaarden.


Constructeurs in C# struct

In C# kan een structeur ook constructors bevatten. Bijvoorbeeld,

struct Employee {

  public int id;

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

Hier hebben we een geparametriseerde constructor Employee() . gemaakt met parameter employeeId .

Opmerking :We kunnen geen parameterloze constructors maken in C# versie 9.0 of lager.


Voorbeeld:Constructor in C#-structs

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();
    }
  }
}

Uitvoer

Employee Name: Brian
Employee Id: 1

In het bovenstaande voorbeeld hebben we een geparametriseerde constructor gemaakt binnen de Employee structureren. Binnen de constructor hebben we de waarden van velden toegewezen:id en naam .

Let op de lijn,

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

Net als in C#-klassen gebruiken we de new sleutelwoord om de constructor aan te roepen. Hier, 1 en "Brian" zijn argumenten die worden doorgegeven aan de constructor, waar ze worden toegewezen aan de parameters employeeID en werknemersnaam respectievelijk."

Opmerking :We moeten de waarde toewijzen aan elk veld van struct binnen de geparametriseerde constructor. Bijvoorbeeld,

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

Hier hebben we geen waarde toegekend voor de naam veld. De code zal dus een fout genereren.


Eigenschappen in C# struct

We kunnen ook eigenschappen gebruiken binnen een C#-struct. Bijvoorbeeld,

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();

    }
  }
}

Uitvoer

Employee Id: 1

In het bovenstaande voorbeeld hebben we Id eigendom binnen de Medewerker structureren.

De haal methode retourneert de id veld en de set methode wijst de waarde toe aan de id veld.


Verschil tussen class en struct in C#

In C# lijken klassen en structs op elkaar. Er zijn echter enkele verschillen tussen hen.

Een klasse is een referentietype, terwijl een struct een waardetype is. Bijvoorbeeld,

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();
    }
  }
}

Uitvoer

Employee1 name: Ed

In het bovenstaande voorbeeld hebben we de waarde van emp1 . toegewezen naar emp2 . De emp2 object verwijst naar hetzelfde object als emp1 . Dus een update in emp2 werkt de waarde van emp1 bij automatisch.

Daarom is een klasse een referentietype .

In tegenstelling tot klassen, wordt de waarde van de struct gekopieerd naar de toegewezen variabele wanneer we de ene structvariabele aan de andere toewijzen. Dus het bijwerken van de ene structvariabele heeft geen invloed op de andere. Bijvoorbeeld,

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();
    }
  }
}

Uitvoer

Employee1 name: John

Wanneer we de waarde van emp1 . toekennen naar emp2 , een nieuwe waarde emp2 is gecreëerd. Hier de waarde van emp1 wordt gekopieerd naar emp2 . Dus, verander in emp2 heeft geen invloed op emp1 .

Daarom is struct een waardetype .

Bovendien is overerving niet mogelijk in de structs, terwijl het een belangrijk kenmerk is van de C#-klassen.


C Taal

  1. C-structuur
  2. C-structuren en aanwijzers
  3. C Structuur en functie
  4. Hoe voorkom je verlies in de competitieve "toekomst van het werk"
  5. C++-structuur met voorbeeld
  6. Kan productierobotica de veiligheid van werknemers vergroten?
  7. Waarom het tijd is om de planning van medewerkers te verbeteren
  8. Overweeg de hercontrole van de achtergrond van de werknemer om het risico te verminderen
  9. Vier manieren om de betrokkenheid van medewerkers te versterken tijdens COVID-19
  10. DVIRC verwelkomt nieuwe medewerkers, bevordert gewaardeerde werknemer
  11. Een opwindende opkomende technologiecategorie:Analytics voor werknemersproductiviteit