C#报错CS1061:List<T>不存在nameimput定义的问题咨询
解决CS1061错误及代码逻辑修正
错误原因分析
你遇到的error CS1061是因为**List<PeopleName>类型没有nameimput属性**——PeopleList是存储PeopleName对象的集合,不能直接调用集合的nameimput来获取姓名,必须访问集合中单个PeopleName对象的NameImput属性。
除此之外,代码还有几个逻辑问题:
- 当
PeopleList为空时,foreach循环根本不会执行,导致循环体里"添加第一个姓名"的代码永远不会触发。 - 变量名大小写混乱(
nameImput/NameImput/nameimput),C#是大小写敏感语言,这会引发潜在的编译或逻辑错误。 - 多余的
if(1==1)判断,完全没有实际作用。
修正后的代码
1. PeopleName类(统一命名规范)
class PeopleName { // 统一属性名大小写,符合C#命名规范 public string Name { get; set; } public PeopleName(string name) { this.Name = name; } }
2. 主逻辑代码(修复循环逻辑与错误调用)
List<PeopleName> PeopleList = new List<PeopleName>(); // 直接判断列表是否为空,无需依赖foreach循环 if (PeopleList.Count == 0) { Console.WriteLine("People in the registry"); Console.WriteLine("---------"); Console.WriteLine("No persons on registry"); Console.WriteLine("Please enter name >> "); string inputName = Console.ReadLine(); PeopleList.Add(new PeopleName(inputName)); } // 显示当前注册表中的所有人 Console.WriteLine("\nPeople in the Registry"); Console.WriteLine("---------"); foreach (var person in PeopleList) { Console.WriteLine(person.Name); } // 添加新姓名的逻辑 Console.WriteLine("\nEnter a new name to be added >> "); string newName = Console.ReadLine(); PeopleList.Add(new PeopleName(newName)); // 再次更新显示 Console.WriteLine("\nUpdated Registry:"); Console.WriteLine("---------"); foreach (var person in PeopleList) { Console.WriteLine(person.Name); }
关键修正点
- 移除无效的
foreach空循环,改为直接判断列表计数处理空列表场景。 - 统一变量名与属性名(用
Name替代混乱的nameImput系列命名),符合C#编码规范。 - 访问集合中对象的属性时,通过遍历列表中的单个
PeopleName实例(person.Name)获取姓名,而非错误调用集合本身不存在的属性。
内容的提问来源于stack exchange,提问作者JohnRhys
相关产品推荐
相关产品推荐

