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

わんくま同盟

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

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

■102599 / 5階層)  C# listの番号を重複せずにシャッフルしたいです
□投稿者/ とっちゃん (800回)-(2023/11/24(Fri) 02:15:06)
No102598 (もか さん) に返信
> public partial class フォーム1 : Form
> {
> */A/*[] ary = new int[](0,1,2,3,4);
> */B/* int[] ary2 = ary.OrderBy(i => Guid.NewGuid()).ToArray();
> }
このような記述をする場合は、コンパイルが通る形を推奨します。
今回の場合は、/* A */ と書くなどですね。


> このようにしてみたのですがBのaryのところで「フィールド初期化子は、静的でないフィールド…’Form1’を参照できません」とエラーが出ます。
> また、Aはエラーが出ないのでそのままにし、BだけをForm1_Loadのところに移動させると、やはりローカル変数ですのでエラーが起こりました。
>>このようにしてみたのですがBのaryのところで「フィールド初期化子は、静的でないフィールド…’Form1’を参照できません」とエラーが出ます。
> なぜこのようなエラーが起こるのでしょうか。

変数には宣言と初期化があります。
A, B ともに変数の宣言と初期化の両方を同時に行っています。

メンバー変数の宣言と同時に初期化処理を書く場合かける内容が限られます。

そのような状況にならないようにコンストラクタで
初期化処理を書くようにします。

ですが、その場合初期化順を指定できないため、参照できないというエラーが出てしまいます。

ここでは回答例として記述しておきます、この場合は、以下のような形で記述します。
詳細については、言語としてのC#を学習してください。
いわゆる入門書などでも記載があると思います。

public partial class フォーム1 : Form
{
int[] ary;
int[] ary2;
public フォーム1()
{
InitializeComponent(); // 多分あるはず
ary = new int[] { 0, 1, 2, 3, 4 };
ary2 = ary.OrderBy(i => Guid.NewGuid()).ToArray();
}
}


編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[4]: C# listの番号を重複せずにシャッフルしたいです /もか 返信無し
 
上記関連ツリー

C# / もか (23/11/23(Thu) 19:36) #102591
Re[1]: C# listの番号を重複せずにシャッフルしたいです / とっちゃん (23/11/23(Thu) 19:49) #102592
  └ Re[2]: C# listの番号を重複せずにシャッフルしたいです / もか (23/11/23(Thu) 21:10) #102593
    ├ Re[3]: C# listの番号を重複せずにシャッフルしたいです / WebSurfer (23/11/23(Thu) 21:34) #102594
    └ Re[3]: C# listの番号を重複せずにシャッフルしたいです / furu (23/11/23(Thu) 21:54) #102595
      ├ Re[4]: C# listの番号を重複せずにシャッフルしたいです / WebSurfer (23/11/23(Thu) 22:09) #102596
      └ Re[4]: C# listの番号を重複せずにシャッフルしたいです / もか (23/11/24(Fri) 01:53) #102598
        ├ C# listの番号を重複せずにシャッフルしたいです / とっちゃん (23/11/24(Fri) 02:15) #102599 ←Now
        └ Re[5]: C# listの番号を重複せずにシャッフルしたいです / WebSurfer (23/11/24(Fri) 10:23) #102600
          └ Re[6]: C# listの番号を重複せずにシャッフルしたいです / WebSurfer (23/11/24(Fri) 10:45) #102601
            └ Re[7]: C# listの番号を重複せずにシャッフルしたいです / もか (23/11/25(Sat) 00:47) #102608
              └ Re[8]: C# listの番号を重複せずにシャッフルしたいです / WebSurfer (23/11/25(Sat) 08:35) #102610
                └ Re[9]: C# listの番号を重複せずにシャッフルしたいです / もか (23/11/25(Sat) 20:09) #102611 解決済み
                  └ Re[10]: C# listの番号を重複せずにシャッフルしたいです / WebSurfer (23/11/25(Sat) 21:35) #102612

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信