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