2010-03-03 17 views
1

我想從一個方法返回一個隨機數,但顯然隱式類型不正確。它說: 「無法隱式轉換類型 'Randomize.RandomNumber' 到 '廉政'」返回一個隨機數類型問題

RandomNumber.cs:

using System; 
using System.Collections.Generic; 
using System.Text; 

namespace Randomizer 
{ 
    class RandomNumber 
    { 
     public int RandomInRange(int l, int u) 
     { 
      Random generator = new Random(); 
      return generator.Next(l, u); 
     } 

    } 
} 

的Program.cs:

using System; 
using System.Collections.Generic; 
using System.Text; 

namespace Randomizer 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Console.Out.WriteLine("Please enter the minimum range for the random number\n"); 
      int min = int.Parse(Console.In.ReadLine()); 

      Console.Out.WriteLine("Please enter the maximum range for the random number\n"); 
      int max = int.Parse(Console.In.ReadLine()); 

      int RandomInt = new RandomNumber(); 

      Console.Out.WriteLine("Your random number is: " + RandomInt.RandomInRange(min, max)); 

      Console.In.ReadLine(); 
     } 
    } 

} 

我知道這幾乎是一個小白問題,但我習慣C++。我在這裏先向您的幫助表示感謝。 =]

回答

3

你只是初始化RandomNumber類的一個實例。你應該說:

RandomNumber random = new RandomNumber(); 
int randomInt = random.RandomRange(min,max); 
+0

啊,現在有道理。謝謝您的幫助! – Stradigos 2010-03-03 00:16:36

1
Console.Out.WriteLine("Your random number is: {0}" , RandomInt.RandomInR) 

是一種可能的解決方案。

+0

我喜歡這個,更乾淨。更少的代碼行。 – Stradigos 2010-03-03 00:16:52

1

讓我知道如果我失去了一些東西,但這樣的:

int RandomInt = new RandomNumber(); 

應該是:

RandomNumber RandomInt = new RandomNumber(); 

你正在創建的RandomNumber實例,而不是int。爲了緩解一些頭痛的未來,你也可以使用C#3.0的type inference(新var關鍵字),讓編譯器推斷類型:

var RandomInt = new RandomNumber(); 

(這是假設你正在使用C#3.0老版本。沒有這個功能)

最後,作爲一種風格的建議,你應該做的類的實例以小寫字母開始,從實際的課程,這與資本開始分化:

var randomInt = new RandomNumber(); 
+0

真的嗎?感謝有關變種的信息。很酷的功能。 – Stradigos 2010-03-03 00:18:40

3

這是重要的是要注意到你不想每次都創建一個新的隨機數。此外,它看起來像你想使用它的方式靜態類。

public static class RandomNumber 
{ 
    private static readonly Random generator = new Random(); 

    public static int RandomInRange(int l, int u) 
    { 
     return generator.Next(l, u); 
    } 
} 
+0

附加說明:你不想每次創建一個新的隨機的原因是因爲Random是從* clock *中除去的。如果您在同一個時鐘片中創建其中的兩個,它們將生成*完全相同的數字*。在一個靜態變量中隨機生成一個ONCE,然後繼續使用相同的Random,而不是每次都創建一個新的。 – 2010-03-03 00:42:11