工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C# 構造体

C# 構造体

このチュートリアルでは、例を使用して C# の構造体について学習します。

構造体 (構造体) は、データを格納するために使用される C# のクラスのようなものです。ただし、クラスとは異なり、構造体は値型です。

人の名前と年齢を保存したいとします。 2 つの変数を作成できます:name そして年齢 価値を保存します。

しかし、複数の人の同じ情報を保存したいとします。

この場合、個人の変数を作成するのは面倒な作業になる可能性があります。これを克服するために、name を格納する構造体を作成できます。 そして年齢 .現在、この構造体はすべての人に使用できます。


C# で構造体を定義する

C# では、struct を使用します。 構造体を定義するためのキーワード。たとえば、

struct Employee  {
  public int id;
}

ここでは、id 構造体内のフィールドです。構造体には、メソッド、インデクサーなども含めることができます。


構造体変数を宣言

構造体を使用する前に、まず構造体変数を作成する必要があります。変数とともに構造体名を使用して、構造体変数を宣言します。たとえば、

struct Employee {
  public int id;
}
...

// declare emp of struct Employee
Employee emp;

上記の例では、Employee という名前の構造体を作成しました。 .ここで、変数 emp を宣言しました 構造体 Employee の .


C# 構造体にアクセス

. とともに struct 変数を使用します 構造体のメンバーにアクセスするための演算子。たとえば、

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

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

ここでは、変数 emp を使用しました 構造体 Employee.Employee のメンバーにアクセスする演算子 .

emp.id = 1;

これは id にアクセスします 構造体 Employee のフィールド .

注意 :int のようなプリミティブ データ型 、 boolfloat C# で定義済みの構造体です。


例:C# 構造体

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

出力

Employee Id: 1

上記のプログラムでは、Employee という名前の構造体を作成しました。 .フィールド id が含まれています およびメソッド getId() .

プログラムの内部 クラスで、変数 emp を宣言しました 構造体 Employee の .次に、emp を使用しました クラスのフィールドとメソッドにアクセスするための変数。

注意 :new を使用して構造体をインスタンス化することもできます キーワード。たとえば、

Employee emp = new Employee();

ここで、この行は構造体のパラメーターなしのコンストラクターを呼び出し、すべてのメンバーを既定値で初期化します。


C# 構造体のコンストラクタ

C# では、構造体にコンストラクターを含めることもできます。たとえば、

struct Employee {

  public int id;

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

ここでは、パラメーター化されたコンストラクター Employee() を作成しました。 パラメータ employeeId を使用 .

注意 :C# バージョン 9.0 以下では、パラメーターなしのコンストラクターを作成できません。


例:C# 構造体のコンストラクター

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

出力

Employee Name: Brian
Employee Id: 1

上記の例では、Employee 内にパラメーター化されたコンストラクターを作成しました。 構造体。コンストラクター内で、フィールドの値を割り当てました:id そして名前 .

行に注意してください、

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

C# クラスと同様に、new を使用しています。 コンストラクタを呼び出すキーワード。こちら、1「ブライアン」 コンストラクターに渡される引数で、パラメーター employeeID に割り当てられます と employeeName それぞれ」

注意 :パラメーター化されたコンストラクター内の構造体のすべてのフィールドに値を割り当てる必要があります。たとえば、

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

ここでは、name の値を割り当てていません。 分野。そのため、コードはエラーを生成します。


C# 構造体のプロパティ

C# 構造体内でプロパティを使用することもできます。たとえば、

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

    }
  }
}

出力

Employee Id: 1

上記の例では、Id があります。 Employee 内のプロパティ 構造体。

取得 メソッドは id を返します フィールドとセット メソッドは値を id に割り当てます フィールド。


C# のクラスと構造体の違い

C# では、クラスと構造体は似ています。ただし、両者にはいくつかの違いがあります。

クラスは参照型ですが、構造体は値型です。たとえば、

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

出力

Employee1 name: Ed

上記の例では、emp1 の値を割り当てています。 emp2 へ . emp2 object は emp1 と同じオブジェクトを参照しています . emp2 の更新 emp1 の値を更新します

これが、クラスが参照型である理由です。 .

クラスとは対照的に、ある構造体変数を別の構造体変数に割り当てると、構造体の値が割り当てられた変数にコピーされます。したがって、1 つの構造体変数を更新しても、他の変数には影響しません。たとえば、

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

出力

Employee1 name: John

emp1 の値を代入すると emp2 へ 、新しい値 emp2 創造された。ここで、emp1 の値 emp2 にコピーされます . emp2 を変更します。 emp1 には影響しません .

これが構造体が値型である理由です .

さらに、C# クラスの重要な機能である継承は構造体では不可能です。


C言語

  1. C構造体
  2. C 構造体とポインター
  3. C 構造と機能
  4. 競争の激しい「仕事の未来」で負けないようにする方法
  5. C++ 構造体と例
  6. 製造ロボットは従業員の安全を高めることができますか?
  7. なぜ従業員のスケジューリングを改善する時が来たのか
  8. リスクを軽減するために、従業員のバックグラウンドの再チェックを検討してください
  9. COVID-19の中で従業員の関与を強化する4つの方法
  10. DVIRCは新入社員を歓迎し、大切な従業員を昇進させます
  11. エキサイティングな新興テクノロジーカテゴリ:従業員の生産性分析