无法将数字添加到列表中

时间:2019-03-23 11:04:16

标签: c#

我正在尝试将main函数中给定的元素存储到textinput类的列表中,并将其回显。数字输入类用于过滤要存储为仅具有数字值的元素。我希望输出仅为10,因为数字输入类的目的是过滤出字母“ a”。但是,我遇到了一些错误,例如预期文件结尾以及缺少“ {”和“}”。我检查了是否错过了其中一些,但找不到任何丢失的东西。另外,我这样做是对的,因为我是该语言的新手,我需要一些有关如何更正和改进它的建议。谢谢。

编辑:我已经使用获得的反馈编辑了代码,并且出现了一些新的错误消息。错误,例如:-

  

名称“ add_char”在当前上下文中不存在。

     

找不到类型或名称空间名称'List <>'。

     

'TextInput'不包含'c'的定义,并且找不到扩展方法'c'接受类型为'TextInput'的第一个参数

EDIT2:因此,在导入System.Collections.Generic并将列表更改为protected之后,我遇到了其他错误,如屏幕截图所示:- Error Messages

代码:

using System;
using System.Collections.Generic;

public class TextInput {   

   protected List<char> add_char = new List<char>();

   public void Add(char c){

        add_char.Add(c);

    }

    public string GetValue(){    

        for (add_char.size = 0; add_char.size < 400; add_char.size++)
            {
               return  c;                
            }

    }

}

public class NumericInput:TextInput{

    public new void Add(char c){

        if(char.IsNumber(c)){ 

            add_char.Add(c);

        }else{

            Console.WriteLine("This is not a number");

        }

    }

}

public class UserInput
{
    public static void Main(string[] args)
    {
        TextInput input = new NumericInput();
        input.Add('1');
        input.Add('a');
        input.Add('0');
        Console.WriteLine(input.GetValue());
    }
}

2 个答案:

答案 0 :(得分:1)

此行阻止将其添加到列表中,因为char永远不是int(char和int是不同的类型):

if(GetValue(this.c).GetType() == typeof(int)){

改为将其更改为:

if(char.IsNumber(c)){ add_char.Add(c);}

答案 1 :(得分:1)

  

名称“ add_char”在当前上下文中不存在。

因为不是。 add_char是在Add类的TextInput方法中声明的局部变量。局部变量只能在声明它们的方法范围内使用。您正在尝试以其他方法(您的Add类的NumericInput方法)使用它。也许您想在TextInput的类级别上声明它?:

protected List<char> add_char = new List<char>();

public void Add(char c)
{
    //...
}
  

找不到类型或名称空间名称'List <>'。

在文件顶部添加using System.Collections.Generic;。还要注意,Visual Studio可以帮助您。如果您使用List<>来放置光标或将鼠标悬停,则应该显示一个工具提示(带有一个小灯泡),以帮助纠正错误。

  

'TextInput'不包含'c'的定义,也找不到找到接受'TextInput'类型的第一个参数的扩展方法'c'

因为不是。 c是在Add类的TextInput方法中声明的局部变量。局部变量只能在声明它们的方法范围内使用。当有人打电话给GetValue()时,您到底想返回什么?该方法没有变量。通过上述更改,您可以将add_char移到类级别,然后该方法可以访问它。