【问题标题】:Error 2 Use of unassigned local variable 'Y'错误 2 使用未分配的局部变量“Y”
【发布时间】:2011-03-23 03:12:31
【问题描述】:

我又遇到了一个错误,我并不是要打扰任何人,但我在这段代码上遇到了一个错误:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Input_Program
{
    class Program
    {
       private static void Main()
        {

           char Y;
            char N;

           Console.WriteLine("Welcome to my bool program!");
           Console.WriteLine("Input a NON capital y or n when told to.");




            if(Y == 'y')
            {
                Console.WriteLine("Thank you,Please wait.....");
            }
        }
    }
}

感谢您的回答!

【问题讨论】:

  • 嗯... Y 从未被赋值?
  • 一般规则是在声明变量时应该始终初始化变量。所以你不应该写char Y;,而是写char Y = 'y';
  • 哦,我用 c# 获取输入,我习惯了 c++ 语法

标签: c# .net variables local-variables unassigned-variable


【解决方案1】:

您的变量char Y 在使用前未初始化。声明时尽量给一个默认值。

EDIT 看来您希望用户输入一些内容,并将其分配给变量 Y。尝试:

Y = Console.ReadKey().KeyChar;

【讨论】:

  • 但是如果它有一个值那么我就不能做 if else's
  • Console.ReadKey()允许用户输入一些东西,并赋值给变量y,你可以使用if-else根据y的值做一些事情。
【解决方案2】:
if(Y == 'y')

Y 是一个没有赋值的局部变量。因此,您可以在 if 语句之前为其分配任何值以进行任何比较。

Y = 'a';  // or some character 

【讨论】:

  • 如果Y 被赋值为a,那么Y=='y' 会产生false,所以if 中的语句不会执行。
【解决方案3】:

您没有将 Y 设置为任何内容,也没有从键盘读取任何内容。

【讨论】:

    【解决方案4】:

    您可以将其显式设置为 null。

    char Y = '<whatever_is_the_default_char>';
    

    这将消除编译器错误。

    编译器错误的根本原因是,当它去编译时,如果条件没有赋值给Y。以上被认为是一个赋值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-13
      • 1970-01-01
      • 1970-01-01
      • 2016-10-04
      • 2010-11-17
      • 2018-12-19
      • 1970-01-01
      相关资源
      最近更新 更多