我收到以下错误。使用未分配的局部变量 markduplicate。我不明白为什么?该程序在数组中查找重复项。我一直在试图弄清楚,我觉得我已经很接近了。感谢您的帮助。
using System;
class duplicate
{
static void Main()
{
const int Array_Size = 5;
int [] number = new int [Array_Size];
int i;
for ( i = 0; i < Array_Size; i++)
{
Console.Write("Element " + i + ": ");
number[i] = Int32.Parse(Console.ReadLine());
if (number[i] < 9 || number[i] > 101)
{
Console.WriteLine("Enter Number between 10 - 100");
number[i] = Int32.Parse(Console.ReadLine());
}
}
bool markduplicate;
for (i = 0; i < Array_Size; i++)
{
for (int j = 0; j < Array_Size; j++)
{
if (i != j)
{
if (number[j] == number[i])
{
markduplicate = true;
}
}
if (markduplicate != true)
{
Console.WriteLine("Element " + i + " " + number[i]);
}
}
}
}
}
最佳答案
这是因为在对 markduplicate
进行任何赋值之前,当引用该值时,C# 的代码分析器检测到存在通过您的程序的路径。具体来说,这将在嵌套循环的第一次迭代期间发生,此时 i
和 j
均为零:if (i != j)包含赋值的
block 不会执行,因此将在下一个 if
语句中检索 markduplicate
的值。
要解决此问题,请更改
bool markduplicate;
至
bool markduplicate = false;
在声明中。
关于c# - 为什么我在 C# 编译器中收到此错误 "Unassigned Local Variable",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15754426/