C# 将random转换为int visual studio 2015

C# 将random转换为int visual studio 2015,c#,winforms,random,visual-studio-2015,C#,Winforms,Random,Visual Studio 2015,为什么这不起作用? 它出现在visual Studio 2015 windows窗体应用程序C中# rnd下有一个错误,它说: 字段初始值设定项不能引用非静态字段、方法或 属性“Form1.rnd” 在C#中,语句不能在类声明下立即出现。它们必须是函数或方法的一部分 namespace guessing { public partial class Form1 : Form { void MethodX() { Random

为什么这不起作用? 它出现在visual Studio 2015 windows窗体应用程序C中#

rnd下有一个错误,它说:

字段初始值设定项不能引用非静态字段、方法或 属性“Form1.rnd”

在C#中,语句不能在类声明下立即出现。它们必须是函数或方法的一部分

namespace guessing
{
    public partial class Form1 : Form
    {
        void MethodX()
        {
            Random rnd = new Random();
            int rndm = rnd.Next(1, 13);
            /* to be continued... */ 
        }
    }
}
试试这个:

namespace guessing
{
    public partial class Form1 : Form
    {
        int rndm = new Random().Next(1, 13);
编辑

针对TomTom:

有很多方法可以做到这一点。如果需要始终保持
Random
的实例可用,请在类级别上定义它

namespace guessing
{
    public partial class Form1 : Form
    {
        Random rand = new Random();
        int rndm = new Random().Next(1, 13);

        // Or make it static.
        static Random rand = new Random();
        int rndm = Form1.rand.Next(1, 13);

        // Or a method
        private int GetRandomInteger()
        {
            return new Random().Next(1, 13);
            // or call your class level instance of Random
        }

是的,正如Soner Gönül所说,您必须将此代码添加到表单中的方法中。因为您可能是使用设计器创建表单的,所以只需转到事件并创建一个方法
created
(或类似方法)。然后将代码放入所创建方法的主体中。

可能您想在方法中编写这些行,比如
Main
maybe?我会-1,因为它具有不同的语义。具体来说,您无法从同一个随机实例中获得另一个随机数。@TomTom:@Tal在类级别上定义了
int
变量。我假设塔尔想要一个随机数。你假设Tal想要有数百个随机数。实际上不是。我假设Tal阅读了这里的规则,并提出了一个非常简单的例子来演示一个问题。我真的假设他不想要一个随机数,只是把它作为一个例子。@TomTomTom:这与在方法中定义
random
对象是一样的。注意,这是非常不可靠的代码;如果在循环中调用
MethodX
,则可以使用相同的
Random
种子并对
Next
的结果进行偏移
rnd
可能应该是构造函数中初始化的类变量。当然。只是为了让代码编译以启动操作。没有对他的功能意图做出任何假设。@dlatikay:如果您返回
int
,这将是一个值得回答的问题。
namespace guessing
{
    public partial class Form1 : Form
    {
        Random rand = new Random();
        int rndm = new Random().Next(1, 13);

        // Or make it static.
        static Random rand = new Random();
        int rndm = Form1.rand.Next(1, 13);

        // Or a method
        private int GetRandomInteger()
        {
            return new Random().Next(1, 13);
            // or call your class level instance of Random
        }