我有一些产生此编译器错误的代码:
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
?我是编码时的菜鸟,我不知道如何从其他班级或职能部门打电话等。
答案 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);
}