You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 14:25:18