Codecademy C#练习Biome属性无法接受Tropical值问题求助
错误原因
- 你在Biome属性的set块中错误调用了属性本身的值做判断和赋值:C#中属性setter接收的用户输入值需要用内置关键字
value获取,你现有代码里写的Biome == "Tropical"实际是读取当前Biome属性的现有值,初始状态下biome字段为空,判断永远不通过,自然无法正确赋值。 - 非法值处理逻辑不符合要求:题目要求传入非法值时biome设为
"Unknown",你的代码写的是赋值为null,不符合规则。 - 另外Name、Trees两个属性的setter也存在同样的问题,没有使用
value,给这两个属性赋值也不会生效。
修正后的Forest类代码
class Forest { public string name; public int trees; public int age; public string biome; public string Name { get { return name; } set { // 用value接收用户传入的赋值 name = value; } } public int Trees { get { return trees; } set { trees = value; } } public string Biome{ get { return biome; } set { // 判断传入的value是否是合法值 if (value == "Temperate" || value == "Tropical" || value == "Boreal"){ biome = value; } else { // 非法值设为Unknown而非null biome = "Unknown"; } } } }
Program类无需修改,运行后即可正常输出Congo和Tropical,符合题目要求。
内容的提问来源于stack exchange,提问作者KeesOG
相关产品推荐
相关产品推荐

