我正在尝试将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());
}
}
答案 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
移到类级别,然后该方法可以访问它。