如何使用其他局部变量声明局部变量?
问题描述:
我是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 };
答
是否有可能对我来说,使用本地 变量声明局部变量?
当然你也可以使用其他本地变量声明一个局部变量,前提是您使用的局部变量已经被之前要定义的变量定义。
在你的情况,你有这样的:
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);
}
}
+0
我也在使用Unity,我想在4个独立的UI文本框中显示4个独特的数字。 – auomak
exclude1.Count变量exclude1不声明如何让未申报对象 – umasankar
的计数你有循环依赖的变量。你认为这应该如何工作?在哪些其他编程语言中你看到了这个工作?如果你知道'excludes'只有3个项目,那么你应该直接使用3而不是使用Count的排除项目。 –
您已经提出了[XY问题](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。您的_real_问题是如何生成唯一随机数序列。你提出的计划是行不通的,但你仍然在问如何实施这个计划。不要这样做。相反,使用一种可以工作并且已经得到解决的算法。鉴于0-100的小数字范围,混洗阵列看起来很理想。请参阅标记为重复的示例和其他想法。 –