C#如何从类方法中调用某些东西

时间:2017-07-27 00:54:51

标签: c#

我有一些产生此编译器错误的代码:

  

CS0236 字段初始值设定项无法引用非静态字段,方法或属性' PublicModule.rnd'

代码如下,错误标记为

的行
public class PublicModule : ModuleBase
{
    Random rnd = new Random();
    int value = rnd.Next(4,50); // <<<< Error is here

    [Command("Ping")]
    public async Task ping()
    {
       await ReplyAsync(Context.User.Mention + ", Pong!");
    }

    [Command("Hara")]
    public async Task hara()
    {
        await ReplyAsync("Hara noi te iubim <3 .");
    }

    [Command("kek")]
    public async Task kek()
    {
        await ReplyAsync(Context.User.Mention + ", kek");
    }

    [Command("Random")]
    public async Task Dice()
    {
        await ReplyAsync(Context.User.Mention + " ur random number is : " + value);
    }
}

如何从课程中调用rnd.Next?我是编码时的菜鸟,我不知道如何从其他班级或职能部门打电话等。

2 个答案:

答案 0 :(得分:1)

从类中删除语句int value = rnd.Next();并将其移动到函数Dick(),如下所示:

public async Task Dice()
{
    int value = rnd.Next(4, 50);
    await ReplyAsync(Context.User.Mention + "ur random number is: " + value);
}

希望它有所帮助。

答案 1 :(得分:0)

将它放在构造函数中:

Random rnd = new Random();
int value;

public PublicModule()
{
    value = rnd.Next(4,50); 
}

但我还应该指出,这只会为每个类实例提供一个新的随机数。如果你每次调用函数时想要一个不同的随机数,你应该这样做:

[Command("Random")]
public async Task Dice()
{
    int value = rnd.Next(4,50);
    await ReplyAsync(Context.User.Mention + " ur random number is : " + value);
}