我正在尝试从方法中返回一个随机数,但显然隐式类型不正确。它说“不能隐式地将类型'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 ++。我在这里先向您的帮助表示感谢。 =]
答案 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();