我正在尝试将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注意:包含更多扩展的代码示例可以为您的问题提供更具体的解决方案,但希望我的示例代码足够通用,以便您了解需要执行的操作
| 归档时间: |
|
| 查看次数: |
148 次 |
| 最近记录: |