2013-12-11 60 views
0

我有一個錯誤嘗試做下面的代碼如何做一個隨機數字?

Random r = new Random(); 
r.Next(10, 100); 

但我有一個錯誤:

Error 1 'ChaseRP_Admin_Control.AdminCP2.Random' does not contain a definition for 'Next' and no extension method 'Next' accepting a first argument of type 'ChaseRP_Admin_Control.AdminCP2.Random' could be found (are you missing a using directive or an assembly reference?)

C:\Users\Someone\documents\visual studio 2013\Projects\ChaseRP Admin Control\ChaseRP Admin Control\AdminCP2\Random.cs 24 39 ChaseRP Admin Control

+0

呃,你是否創建了一個名爲'Random'的類? – Novak

+3

你似乎已經定義了你自己的Random類(在'Random.cs'中)。您沒有使用.Net框架中的System.Random。 – Blorgbeard

回答

5

ChaseRP_Admin_Control.AdminCP2.Random

你讓你自己Random類,它不具有Next()方法。
要麼重命名類,或者限定其命名空間(System.Random

7

原來你在你的組件名爲Random另一個類。它沒有Next()方法,如System.Random。您需要更改名稱或明確指定System.Random,例如:

var r = new System.Random(); //look at the difference. 
r.Next(10, 100); 
3

從錯誤時,你在你的命名空間ChaseRP_Admin_Control.AdminCP2那有沒有一個Next()方法名稱Random有一個類。您可以更改班級的名稱。

或者,您可以將System命名空間放在隨機前,以告知編譯器,您希望來自系統命名空間的隨機數不是類中的隨機數。

System.Random r = new System.Random(); 
+0

「你應該改變班級的名字」---命名空間是爲了在你與別人的班級名稱 – zerkms

+1

@zerkms發生碰撞時不要重新命名班級,但在這種特殊情況下,我認爲班級應該改變類的名稱,我永遠不會喜歡我的任何類名與.NET框架提供的相同。恕我直言。 – Habib

+0

@zerkms雖然這是真的,但避免在'system'命名空間中使用類型名稱通常是一個好主意,因爲您的類的高級用戶會對該名稱空間使用'using',從而導致名稱衝突。當碰撞類型位於不太可能與您一起使用的命名空間中時,這不是問題。 – Servy