无法生成随机数Visual C#

use*_*044 0 c#

我正在尝试将Rock Paper Scissors游戏作为我的第一个'项目',所以我需要计算机从1-3生成一个随机数来表示他们的回合.

我一直在尝试这段代码,但我无法弄清楚为什么它不起作用:

Random rnd = new Random();
int pchand= rnd.Next(1, 4); 
Run Code Online (Sandbox Code Playgroud)

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

A field initializer cannot reference the non-static field, method, or property FileName.Form1.rnd
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

mus*_*fan 10

问题在于你是在类级而不是函数级执行此操作.

可以在类级别声明Random,但创建pchand应该在函数内完成.

就像是:

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

    public static void Main()
    {
        int pchand = rnd.Next(1, 4); 
    }
}
Run Code Online (Sandbox Code Playgroud)

原始尝试导致编译时错误的原因是编译器不保证字段初始化的顺序.因此,无法保证rnd在使用之前将其设置.因此,编译器会阻止您在运行时避免意外的空引用错误.


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