Latest web development tutorials

C#の構造(構造体)

C#では、構造は、データ構造の値型です。 これは、単一の変数は、データの様々なタイプに関連するデータを格納することができる可能にします。構造体キーワード構造を作成するために使用されます。

構造であり、使用済みに表すAレコード。 あなたは動的ライブラリの本を追跡するとします。 あなた5月たいキープトラックの各書籍の次の属性:

  • タイトル
  • 著者
  • テーマ
  • 書籍ID

定義構造

定義A構造、あなた必見使用A構造体ステートメント。 構造計算書は、新しいデータ型のいくつかのメンバーと手順を定義します。

たとえば、ブックの構造を宣言し、次のように従うことができます。

構造体洋書
{
   公共の文字列タイトル。
   公共の文字列の作者。
   パブリック文字列対象。
   公共int型book_id。
};  

次のプログラムは、構造体の使用方法を示しています。

システムを用いました。
     
構造体洋書
{
   公共の文字列のタイトル。
   パブリック文字列著者。
   パブリック文字列対象。
   公共int型book_id。
};  

パブリッククラスtestStructure
{
   公共の静的な無効メイン(文字列[] argsを)
   {

      本BOOK1; / *宣言BOOK1、タイプブック* /
      ブックブック2; / *宣言ブック2、タイプのブック* /

      / *ブック1ディテール* /
      Book1.title = "Cプログラミング」。
      Book1.author = "Nuhaアリ」。 
      Book1.subject = "Cプログラミングチュートリアル";
      Book1.book_id = 6495407;

      / *ブック2(詳細な説明)* /
      Book2.title = "テレコム課金」。
      Book2.author = "ザラアリ」。
      Book2.subject = "テレコム課金チュートリアル」。
      Book2.book_id = 6495700;

      / *印刷BOOK1情報* /
      Console.WriteLineを( "ブック1タイトル:{0}"、Book1.title)。
      Console.WriteLineを( "ブック1著者:{0}"、Book1.author)。
      Console.WriteLineを( "ブック1件名:{0}"、Book1.subject)。
      Console.WriteLineを( "ブック1 book_id:{0}"、Book1.book_id)。

      / *印刷ブック2情報* /
      Console.WriteLineを( "ブック2タイトル:{0}"、Book2.title)。
      Console.WriteLineを( "ブック2著者:{0}"、Book2.author)。
      Console.WriteLineを( "ブック2件名:{0}"、Book2.subject)。
      Console.WriteLineを( "ブック2 book_id:{0}"、Book2.book_id)。       

      Console.ReadKey()。

   }
}

上記のコードはコンパイルされ、実行されると、次の結果を生成します。

書籍1タイトル:Cプログラミング
ブック1著者:Nuhaアリ
ブック1主題:Cプログラミングチュートリアル
ブック1 book_id:6495407
ブック2タイトル:テレコム課金
ブック2著者:ザラアリ
ブック2件名:テレコム課金チュートリアル
ブック2 book_id:6495700

C#の構造的特徴

あなたはブックと呼ばれる単純な構造を使用しています。 C#と異なる構造でCまたはC + +の伝統的な構造で。 構造特性のC#の:

  • 構造は、メソッド、フィールド、インデックス、プロパティ、演算子、メソッド、およびイベントを有することができます。
  • 構造缶BE定義のコンストラクタが、することはできません定義Aデストラクタ。 ただし、デフォルトコンストラクタの構造を定義することはできません。 ザ・デフォルトコンストラクタです自動的に定義され、缶はないが変更されました。
  • クラスとは異なり、構造が他の構造やクラスから継承することはできません。
  • 他の構造または構造ではないクラスのインフラとして。
  • 構造は、1つまたは複数のインターフェイスを実装することができます。
  • 構造部材缶はないが指定されインクルード抽象的、仮想、または保護されました。
  • あなたは、オブジェクトの構造を作成するには、New演算子を使用する場合は、構造体を作成するために、適切なコンストラクタを呼び出します。 クラスとは異なり、構造がNew演算子を使用することはできませんがインスタンス化します。
  • あなたはフィールドのみ割り当てがあった後にすべてのフィールドが初期化されている場合のみ、新しい演算子を使用しない場合、オブジェクトが使用することだけでした。

構造対クラス

クラスと構造体は、以下の基本的な違いがあります。

  • クラスは、構造体が値型で、参照型です。
  • 構造は継承をサポートしていません。
  • 構造は、デフォルトコンストラクタを宣言することはできません。

上記の議論については、のは、前の例を書き直してみましょう:

システムを用いました。
     
構造体洋書
{
   プライベート文字列のタイトル。
   プライベート文字列著者;
   プライベート文字列対象。
   プライベートint型book_id。
   公共無効にgetValues(文字列トン、列A、列s、int型のID)
   {
      タイトル=トン。
      著者= A;
      対象=秒;
      book_id = ID;
   }
   公共ボイドディスプレイ()
   {
      Console.WriteLineを( "タイトル:{0}"、タイトル)。
      Console.WriteLineを( "著者:{0}"、作者)。
      Console.WriteLineを( "件名:{0}"、件名)。
      Console.WriteLineを( "Book_id:{0}"、book_id)。
   }

};  

パブリッククラスtestStructure
{
   公共の静的な無効メイン(文字列[] argsを)
   {

      洋書BOOK1 =新しい書籍(); / *宣言BOOK1、タイプブック* /
      ブックブック2 =新しい書籍(); / *宣言ブック2、タイプブック* /

      / *ブック1ディテール* /
      Book1.getValues(「Cプログラミング」、
      「Nuhaアリ」、「Cプログラミングチュートリアル "、6495407);

      / *ブック2(詳細な説明)* /
      Book2.getValues(「テレコム課金」、
      「ザラアリ」、「テレコム課金チュートリアル」、6495700);

      / *印刷BOOK1情報* /
      Book1.display()。

      / *印刷ブック2情報* /
      Book2.display()。 

      Console.ReadKey()。

   }
}

上記のコードはコンパイルされ、実行されると、次の結果を生成します。

タイトル:Cプログラミング
著者:Nuhaアリ
件名:Cプログラミングチュートリアル
Book_id:6495407
タイトル:テレコム課金
著者:ザラアリ
件名:テレコム課金チュートリアル
Book_id:6495700