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

C#类内变量改为数组后已输入内容无法正常输出问题求助

问题根因
  • 索引自增逻辑错误:PlayerCharacter构造方法中,你先使用i作为下标完成属性赋值,之后才执行i++。构造完成后i已经指向数组的下一个空位置,调用Output方法时,属性get逻辑读取的是未赋值的数组空位,所以输出为空。
  • string.Join用法错误:string.Join用于拼接集合的所有元素,你传入的是单个字符串、数字、字符类型的属性值,不需要使用该方法,直接输出属性即可。
  • 数据存储逻辑错误:角色数组定义在PlayerCharacter类的实例成员中,每次创建新角色实例都会生成独立的空数组,历史创建的角色数据不会保存在同一个数组内,无法实现多角色存储查看。同时Main方法仅声明了单个角色变量,每次创建新角色都会覆盖之前的实例,历史数据直接丢失。
  • 局部变量覆盖问题:View逻辑中声明的局部变量i、x和角色实例内部的i、x属性无关,修改局部变量不会改变实例的索引取值,遍历逻辑不生效。
修复方案

临时修复(快速看到输出)

修改两处代码即可看到当前创建角色的输出:

  1. 删掉PlayerCharacter构造方法最后一行的i++;,保证构造完成后i仍指向刚赋值的数组下标
  2. 把所有Output方法中的string.Join去掉,例如:
// 原代码
Console.WriteLine("Name: " + string.Join(",", Name));
// 修改为
Console.WriteLine("Name: " + Name);

Mage类的Output方法同理修改,删掉string.Join即可。

合规修复(符合作业多角色存储要求)

如果作业要求用数组存储多个角色,建议调整设计逻辑:

  1. 角色类(PlayerCharacter及子类)仅存储单个角色的普通属性,不要用数组
  2. 在Main方法中声明长度为10的PlayerCharacter[] characterArray,或者用List<PlayerCharacter>存储所有创建的角色实例
  3. 查看角色时直接遍历数组/列表,调用每个实例的Output方法即可

内容的提问来源于stack exchange,提问作者Zhedric Brillante-Pili

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:57:01