2017-07-18 124 views
0

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

exclude1.Count变量exclude1不声明如何让未申报对象 – umasankar

+0

的计数你有循环依赖的变量。你认为这应该如何工作?在哪些其他编程语言中你看到了这个工作?如果你知道'excludes'只有3个项目,那么你应该直接使用3而不是使用Count的排除项目。 –

+0

您已经提出了[XY问题](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。您的_real_问题是如何生成唯一随机数序列。你提出的计划是行不通的,但你仍然在问如何实施这个计划。不要这样做。相反,使用一种可以工作并且已经得到解决的算法。鉴于0-100的小数字范围,混洗阵列看起来很理想。请参阅标记为重复的示例和其他想法。 –

回答

1

是否有可能对我来说,使用本地 变量声明局部变量?

当然你也可以使用其他本地变量声明一个局部变量,前提是您使用的局部变量已经被之前要定义的变量定义。

在你的情况,你有这样的:

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); 
    } 
} 
+0

我也在使用Unity,我想在4个独立的UI文本框中显示4个独特的数字。 – auomak