2017-07-27 35 views
-2

我有一個產生此編譯器錯誤的一些代碼:C#如何調用的東西從一個類的方法中

CS0236 A field initializer cannot reference the non-static field, method, or property '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?我在編碼小白,我不知道我怎麼能叫的東西從另一個類或函數等

+3

您需要將'rnd.Next'放入函數體中。您不能在C#中的函數之外編寫語句。在顯示值之前,將'int value = rnd.Next();'語句移到'Dick()'中。 – Yatin

+3

請嘗試將代碼放在問題中會更容易幫助 –

+1

我建議您從閱讀C#教程開始。有幾十個初學者教程。 – itsme86

回答

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); 
} 

希望它有幫助。

+0

Upvote爲好例子 –

+0

謝謝@ johnny5 – Yatin

+0

我認爲你誤讀了方法名... – itsme86

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); 
} 
相關問題