【问题标题】:"Object Reference is required for non-static field"“非静态字段需要对象引用”
【发布时间】:2021-05-02 14:20:33
【问题描述】:

所以我需要为我的扫雷项目制作一个随机数生成器,我决定把它放在一个方法中。

public static void GenerateBombs(int gsize, int numbombs, HashSet<int> numbers)
    {
        int num = gsize * gsize;
        while (numbers.Count < numbombs)
        {
            numbers.Add(Random.Next(1, num));
        }
    }

但是,我不断收到“非静态字段、属性或方法所需的对象引用”。我不知道为什么,也无法从其他问题中弄清楚。

【问题讨论】:

标签: c# object random


【解决方案1】:

这样做:

private static Random rand = new Random();

public static void GenerateBombs(int gsize, int numbombs, HashSet<int> numbers)
{
    int num = gsize * gsize;
    while (numbers.Count < numbombs)
    {
        numbers.Add(rand.Next(1, num));
    }
}

【讨论】:

    【解决方案2】:

    Random 类的方法Next() 不是静态方法。你必须先声明一个 Random 类的实例:

    static Random random = new Random();
    

    那么您可以将其用作numbers.Add(random.Next(1, num)),现在使用类的静态实例而不是类本身。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多