0

我正在尝试将 Rock Paper Scissors 游戏作为我的第一个“项目”,因此我需要计算机生成一个 1-3 的随机数来代表轮到他们。

我一直在尝试这段代码,但我不知道为什么它不起作用:

Random rnd = new Random();
int pchand= rnd.Next(1, 4); 

rnd 下面有一条红色波浪线,上面写着:

A field initializer cannot reference the non-static field, method, or property FileName.Form1.rnd

谢谢你的帮助!

4

1 回答 1

10

问题将是因为您是在类级别而不是函数级别执行此操作。

在类级别声明 Random 很好,但创建pchand应该在函数内完成。

就像是:

public class Test
{
    static Random rnd = new Random();

    public static void Main()
    {
        int pchand = rnd.Next(1, 4); 
    }
}

您最初的尝试导致编译时错误的原因是编译器不保证字段初始化的顺序。所以不能保证rnd在你使用之前就设置好了。因此,编译器会阻止您这样做,以避免在运行时出现意外的空引用错误。


OP 注意:包含更扩展的代码示例可以为您的问题提供更具体的解决方案,但希望我的示例代码足够通用,让您了解您需要做什么

于 2013-10-23T11:21:53.957 回答