我这周开始自学 C#,我可能无法理解一些概念,对于理解我的任何困难,我深表歉意。 我想创建一个接收 int[] 和 int,但只返回 int[] 的方法。 我收到了两个错误。
对于主要方法:
无法将类型“int[]”隐式转换为“int”
static void Main(string[] args)
{
int[] Num = new int[5];
int i;
for (i = 0; i < 5; i++)
Num[i] = NumGen(Num, i);
}
创建方法:
无法将类型“int”隐式转换为“int[]”
static int[] NumGen(int[] Num, int i)
{
Random rndm = new Random();
Num[i] = rndm.Next(100) + 1;
return Num[i];
}
我想了解我做错了什么以及将来如何避免这种错误。 提前感谢您的回答!
编辑: 谢谢大家,您的建议解决了问题。 :)
最佳答案
只是 NumGen
的返回类型 - 应该是 int
:
static int NumGen(int[] Num, int i)
{
Random rndm = new Random();
Num[i] = rndm.Next(100) + 1;
return Num[i];
}
但是:您的代码有一个严重的错误。 new Random()
这样每次都会产生相同的值,因为它是通过时钟播种的。更好的方法是:
static int NumGen(Random rndm, int[] Num, int i)
{
Num[i] = rndm.Next(100) + 1;
return Num[i];
}
static void Main(string[] args)
{
int[] Num = new int[5];
Random rand = new Random();
for (int i = 0; i < 5; i++)
Num[i] = NumGen(rand, Num, i);
}
或者更简洁:
static int Randomize(Random rndm)
{
return rndm.Next(100) + 1;
}
static void Main(string[] args)
{
int[] Num = new int[5];
Random rand = new Random();
for (int i = 0; i < 5; i++) Num[i] = Randomize(rand);
}
关于c# - 如何使方法接收两种不同的数据类型并仅返回其中一种 C#?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19955326/