-2


0

C#の乱数

ボタンをクリックして、1、20の間の数字を選択し、結果をlblPickFive_1.Textに表示したいのですが、実行しようとすると、あちこちでエラーが発生します。 エラー1フィールド初期化子は、非静的フィールド、メソッド、またはプロパティ 'LotteryTickets.Form1.random’を参照できません

警告4到達不能コードが検出されました

    string random;
        string num = random.Next();

        string num = random.Next(20);



    private int RandomNumber(int min, int max)
    {
    Random random = new Random();
    return random.Next(min, max);
    lblPickFive_1.Text=num;
    }
 }

4 Answer


1


代わりにこれを試してください:

private void SetRandomNumber(int min, int max)
{
   int num = new Random().Next(min, max);
   lblPickFive_1.Text=num;
}


0


それの外観から、これらは理由です:

_ エラー1フィールド初期化子は、非静的フィールド、メソッド、またはプロパティ 'LotteryTickets.Form1.random’を参照できません _

あなたのメソッドはプライベートであり、あなたはそれを外部から呼び出そうとしているからです

private int RandomNumber(int min, int max)

代わりに「内部」または「公開」にする

_ 警告4到達不能コードが検出されました _

テキストボックスが設定される前に戻るためです。

return random.Next(min, max);
lblPickFive_1.Text=num; // This will never get reached

そして、それが私なら、Randomメソッドを次のように記述します。

 internal static int RandomNumber(int min, int max)
 {
    Random random = new Random(DateTime.Now.Millisecond); // Use a seed to reduce the chance of re-ocurring numbers
    return random.Next(min, max);
 }

そしておそらくフォーム自体ではなく `RandomHelper`クラスにそれを持っているでしょう。


0


random.Next()の呼び出しは、ランダムオブジェクトが宣言されているスコープ外です。 次に、ラベルのテキストをnumに設定する前に戻るため、到達不能コードを取得しています。

これを試して:

  class MyClass
  {
    Random random;
    public MyClass()
    {
      random = new Random(Guid.NewGuid().GetHashCode());
    }

    public void RandomNumber(int min, int max)
    {
      lblPickFive_1.Text = random.Next(min, max).ToString();
    }
  }


-1


あなたのほとんどは何らかの形で間違っています…​

最初に、 `Random`のインスタンスが1つだけ必要です。それらはすべて同じ番号でシードされるためです…​

第二に、彼らの一部が言ったように、コード `lblPickFive_1.Text = num;`は決して呼び出されません。 方法をこれに変更します。

Random rand = new Random();

private int RandomNumber(int min, int max)
{
    int i = rand.Next(min, max);
    lblPickFive_1.Text=i;
    return i;
}