structの作成

2942 ワード

本稿では,C#における構造(struct)の部分的初期化と完全初期化を例に挙げて解析し,参考に供した.具体的な分析は以下の通りである.
次のように値タイプstructがあるとします.
?
1
2
3
4
5
6
7
8
9 public struct Size {      public int Length;      public int Width;      public int Area()      {        return Length*Width;      } }
一、クライアント、すべてのstructフィールドを初期化して呼び出す方法
?
1
2
3
4
5
6
7
8
9
10
11 class Program {      static void Main( string [] args)      {        Size size;        size.Length = 10;        size.Width = 5;        Console.WriteLine(size.Area());        Console.ReadKey();      } }
結果:50
二、クライアント、一部structフィールドを初期化する
?
1
2
3
4
5
6
7
8
9
10 class Program {      static void Main( string [] args)      {        Size size;        size.Length = 10;        Console.WriteLine(size.Area());        Console.ReadKey();      } }
結果:エラーが発生し、値が割り当てられていないローカル変数が使用されました.表示:structインスタンスのメソッドを呼び出すには、structのすべてのフィールドを初期化する必要があります.
三、クライアント、構造関数によってstructを初期化する
?
1
2
3
4
5
6
7
8
9 class Program {      static void Main( string [] args)      {        Size size = new Size();        Console.WriteLine(size.Area());        Console.ReadKey();      } }
結果:0ここではstructコンストラクション関数によってインスタンスを作成し、実際にはstructのすべてのフィールドに初期値0を割り当てます.
まとめ:
structインスタンスメソッドを呼び出す前に、structのすべてのフィールドに初期値を割り当てる必要があります.すなわち、完全な初期化が要求され、一部の初期化は許可されません.「structインスタンス.フィールド名」ですべてのフィールドに明示的に値を割り当てるか、structコンストラクション関数ですべてのフィールドにデフォルト値を割り当てます.
本稿で述べた分析は皆さんのC#プログラム設計の学習に役立つことを望んでいます.