2010-03-03 7 views
1

메서드에서 임의의 숫자를 반환하려고하지만 암시 적 형식이 올바르지 않은 것 같습니다. Program.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); 
     } 

    } 
} 

:

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

} 

나는 그것이 꽤 많이 멍청한 놈 알고 그것은

RandomNumber.cs '암시'INT '로 유형'Randomize.RandomNumber을 '변환 할 수 없습니다 "라는 질문하지만 C++에 익숙해졌습니다. 사전에 도움을 주셔서 감사합니다. =]

답변

3

방금 ​​RandomNumber 클래스의 인스턴스를 초기화하는 중입니다.

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

아, 이제 이해가됩니다. 도와 주셔서 감사합니다! – Stradigos

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

가능한 해결책은 하나입니다.

+0

나는 이것을 훨씬 좋아합니다. 적은 코드 행. – Stradigos

1

내가 뭔가를 누락 알려줘, 그러나 이것은 : 당신은 말을해야

int RandomInt = new RandomNumber(); 

은 다음과 같아야합니다

RandomNumber RandomInt = new RandomNumber(); 

당신은 RandomNumber의 인스턴스를 만들 , 아니 int. 미래에 약간의 두통을 완화하기 위해, 당신은 또한 컴파일러가 타입 추론 할 수 있도록 C# 3.0의 type inference (새로운 var 키워드를) 사용할 수 있습니다. 이것은 당신이 C# 3.0을 사용하는 가정한다 (

var RandomInt = new RandomNumber(); 

을 이전 버전을 .

var randomInt = new RandomNumber(); 
+0

오, 정말요? var에 대한 정보를 가져 주셔서 감사합니다. 멋진 기능. – Stradigos

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 ONCE를 만들고 매번 새로운 것을 만드는 대신 동일한 Random을 사용하여 re =를 유지하십시오. –