如何使用另一个局部变量声明局部变量?

时间:2017-07-18 04:57:32

标签: c# variables local

我是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 };

1 个答案:

答案 0 :(得分:1)

  

我是否可以使用local声明局部变量   变量

当然,你可以使用其他局部变量来声明一个局部变量,如果你使用的局部变量已经在你想要定义的变量之前定义了。

在你的情况下,你有这个:

int index1 = rand.Next(0, 101 - exclude1.Count);

您需要exclude1,这是在index1之后声明的。即使您在exclude1之前移动index1声明,也会遇到问题,因为从下面可以看出:

 var exclude1 = new HashSet<double>() { index2, index3, index4 };

exclude1需要index2index3index4index2需要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);
    }
}