返回随机数类型问题

时间:2010-03-03 00:03:37

标签: c#

我正在尝试从方法中返回一个随机数,但显然隐式类型不正确。它说“不能隐式地将类型'Randomize.RandomNumber'转换为'int'”

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

}

我知道这几乎是一个noob问题,但我已经习惯了C ++。我在这里先向您的帮助表示感谢。 =]

4 个答案:

答案 0 :(得分:3)

您只是初始化RandomNumber类的实例。你应该说:

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

答案 1 :(得分: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);
    }
}

答案 2 :(得分:1)

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

是一种可能的解决方案。

答案 3 :(得分: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();