c# - 为什么我在 C# 编译器中收到此错误 "Unassigned Local Variable"

标签 c# arrays compiler-errors duplicates unassigned-variable

我收到以下错误。使用未分配的局部变量 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# 的代码分析器检测到存在通过您的程序的路径。具体来说,这将在嵌套循环的第一次迭代期间发生,此时 ij 均为零:if (i != j)包含赋值的 block 不会执行,因此将在下一个 if 语句中检索 markduplicate 的值。

要解决此问题,请更改

bool markduplicate;

bool markduplicate = false;

在声明中。

关于c# - 为什么我在 C# 编译器中收到此错误 "Unassigned Local Variable",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15754426/

相关文章:

java - 当前填充混合类型字节数组的最佳方法

recursion - 使用递归累积列表时出现类型错误

java - 空对象引用上的 android.content.Context.getSharedPreferences(java.lang.String, int)'

c# - 将经过处理的视频从 C# 程序发送到 C++ 程序

c# - 如何在不丢失链接的情况下将 WPF RichTextBox 保存在数据库中?

c# - Repeater 中的 CustomValidator

c# - LINQ 分层查询返回所有父级

Python:用不同的数字替换数组中的每个数字

检查指针数组中的指针是否为空

c++ - 错误 : expected ', ' or ' ;' before 'namespace'