使用未分配的局部变量

All*_*iah 1 c# asp.net .net-4.0 .net-3.5

我在编写从十六进制到二进制、十进制到二进制等的转换器时遇到问题。这是我的代码,当我调试它时,我收到错误“使用未分配的局部变量 Dec_Int10”,你能帮我吗?我该如何修复这个错误?

protected void Button_Click (object sender, Event Args e)
{
      if (Page.IsValid)
      {
           int Dec_Int10;
           if(!(string.IsNullOrEmpty(TextBox1.Text)))
           {
                 Dec_Int10 = Convert.ToInt32(TextBox1.Text, 10)));
           }
           if(!(string.IsNullOrEmpty(TextBox2.Text)))
           {
                 Dec_Int10 = Convert.ToInt32(TextBox2.Text, 16)));
           }
           if(!(string.IsNullOrEmpty(TextBox3.Text)))
           {
                 Dec_Int10 = Convert.ToInt32(TextBox3.Text, 8)));
           }
           if(!(string.IsNullOrEmpty(TextBox4.Text)))
           {
                 Dec_Int10 = Convert.ToInt32(TextBox4.Text, 2)));
           }
           string Dec_Str10 = Convert.ToString(Dec_Int10, 10);
           string Hex_Str16 = Convert.ToString(Dec_Int10, 16);
           string Oct_Str8 = Convert.ToString(Dec_Int10, 8);
           string Bin_Str2 = Convert.ToString(Dec_Int10, 2);
           TextBox1.Text = Dec_Str10;
           TextBox2.Text = Hex_Str16;
           TextBox3.Text = Oct_Str8;
           TextBox4.Text = Bin_Str2;
       }
}
Run Code Online (Sandbox Code Playgroud)

Eri*_*ren 5

您会收到该错误,因为没有为该变量分配默认值,并且由于对其的唯一分配位于 if 块内,因此编译器认为该变量有可能永远不会被分配。

如果您将其初始化为 0,则不会再出现该错误。

这是编译器提供的检查之一,可以防止您犯容易犯的错误。