C#对象数组遍历无输出问题求助:新手练习遇显示异常
问题排查与修复
你的代码无输出的核心原因是person类的构造函数没有正确给Name属性赋值,另外还有一处命名规范问题,具体修复如下:
问题1:属性与私有字段不匹配
你手动声明了私有字段string name,同时又定义了自动实现的属性public string Name { get; set; },这两者是相互独立的——自动实现的属性会生成一个编译器自动命名的私有字段,和你手动写的name不是同一个。构造函数里给this.name赋值,根本不会影响Name属性的值,所以输出时Name是空字符串,导致看起来没有输出。
修复方案二选一:
- 方案1:去掉手动声明的
string name,让自动属性自行管理字段:
class person { public string Name { get; set; } public person(string name) { this.Name = name; // 直接给属性赋值 } }
- 方案2:让Name属性绑定手动声明的私有字段:
class person { string name; public string Name { get { return name; } set { name = value; } } public person(string name) { this.name = name; } }
问题2:命名规范(非致命,但建议修正)
C#的命名规范要求类名使用大驼峰命名法,所以program应该改为Program:
class Program // 首字母大写 { public static void Main(string[] args) { // ... 原有代码 } }
修复后完整代码
using System; namespace pra { class Program { public static void Main(string[] args) { person[] person1 = new person[2]; person1[0] = new person("Mike"); person1[1] = new person("John"); for (int i = 0; i < person1.Length; i++) { Console.WriteLine("{0}", person1[i].Name); } } } class person { public string Name { get; set; } public person(string name) { this.Name = name; } } }
运行修复后的代码,就能正常输出Mike和John了。
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

