我是C#的初学者。
我是否可以使用局部变量声明局部变量?
我想生成4个唯一的随机数0-100,没有重复,但现在我已经坚持使用这些变量了。我试图使用另一个本地变量数据声明这些局部变量,但我不能,因为语句从上到下运行。例如,从下面的代码:我不能声明index1,因为尚未声明exclude1。如果有人可以帮我解决这个问题或建议一种新的方法,我将不胜感激。谢谢!
var rand = new System.Random();
int index1 = rand.Next(0, 101 - exclude1.Count);
int index2 = rand.Next(0, 101 - exclude2.Count);
int index3 = rand.Next(0, 101 - exclude3.Count);
int index4 = rand.Next(0, 101 - exclude4.Count);
var exclude1 = new HashSet<double>() { index2, index3, index4 };
var exclude2 = new HashSet<double>() { index1, index3, index4 };
var exclude3 = new HashSet<double>() { index2, index1, index4 };
var exclude4 = new HashSet<double>() { index2, index3, index1 };
答案 0 :(得分:1)
我是否可以使用local声明局部变量 变量
当然,你可以使用其他局部变量来声明一个局部变量,如果你使用的局部变量已经在你想要定义的变量之前定义了。
在你的情况下,你有这个:
int index1 = rand.Next(0, 101 - exclude1.Count);
您需要exclude1
,这是在index1
之后声明的。即使您在exclude1
之前移动index1
声明,也会遇到问题,因为从下面可以看出:
var exclude1 = new HashSet<double>() { index2, index3, index4 };
exclude1
需要index2
,index3
,index4
和index2
需要exclude2
,其中包含index1
!所以代码无效。
如果您想获得[0,100]范围内的4个唯一随机数,您可以尝试以下方法:
var numbers = new List<int>();
var random = new Random();
while(numbers.Length < 4)
{
int number = random.Next(0,101);
if(!numbers.Contains(number))
{
numbers.Add(number);
}
}