C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 構造体の配列


(過去ログ 106 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■63563 / inTopicNo.1)  構造体の配列
  
□投稿者/ 三木 (1回)-(2012/09/07(Fri) 12:12:30)

分類:[C#] 

以下のような構造体を作りたいのですが、
「フィールド初期化子は、静的でないフィールド、メソッド、またはプロパティ GROUP_NUM' を参照できません」と怒られます。
なぜでしょうか。

public int GROUP_NUM = 40;
public struct point_input
{
public bool data_1;
public int data_2;
}
point_input[] data = new point_input[GROUP_NUM];

以上、よろしくお願いします。
引用返信 編集キー/
■63565 / inTopicNo.2)  Re[1]: 構造体の配列
□投稿者/ shu (69回)-(2012/09/07(Fri) 12:22:20)
No63563 (三木 さん) に返信

これなら大丈夫ですが、どのように書かれましたか?

	public partial class Form1 : Form
	{
		public int GROUP_NUM = 40;

		public struct point_input
		{
			public bool data_1;
			public int data_2;
		}

		public Form1()
		{
			InitializeComponent();
			point_input[] data = new point_input[GROUP_NUM];
		}
	}

引用返信 編集キー/
■63566 / inTopicNo.3)  Re[1]: 構造体の配列
□投稿者/ 魔界の仮面弁士 (54回)-(2012/09/07(Fri) 12:29:38)
No63563 (三木 さん) に返信
> 「フィールド初期化子は、静的でないフィールド、メソッド、またはプロパティ GROUP_NUM' を参照できません」と怒られます。
> なぜでしょうか。

何故と言われても、そういう仕様になっているからとしか答えられないのですが、
どのように修正するかという話なら――

(案1) public int GROUP_NUM = 40; の代わりに
      public const int GROUP_NUM = 40; を採用する。

(案2) point_input[] data; の初期化処理を、フィールド初期化子で行うのではなく、
      親クラスのコンストラクタで行うようにする。

引用返信 編集キー/
■63567 / inTopicNo.4)  Re[2]: 構造体の配列
□投稿者/ 三木 (2回)-(2012/09/07(Fri) 12:34:16)
2012/09/07(Fri) 12:34:36 編集(投稿者)

No63565 (shu さん) に返信
> ■No63563 (三木 さん) に返信
>
> これなら大丈夫ですが、どのように書かれましたか?
>
> public partial class Form1 : Form
> {
> public int GROUP_NUM = 40;
>
> public struct point_input
> {
> public bool data_1;
> public int data_2;
> }
>
> public Form1()
> {
> InitializeComponent();
> point_input[] data = new point_input[GROUP_NUM];
> }
> }


ありがとうございます。できました!!

上のソースで言うなら、point_input[] data = new point_input[GROUP_NUM]を
public Form1()の外でしていました////
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -