C#入门求助:修复给定初始代码的两个编译错误
修复C#代码的两个编译错误
错误1:当前上下文中不存在名称“TypeOfCup”
你在代码里用了TypeOfCup.Coffee,这是枚举类型的用法,但你并没有定义这个枚举。原来的Cup类里把TypeOfCup设为string类型,和这个用法不匹配。
修复方法:
- 先定义一个
TypeOfCup枚举:
public enum TypeOfCup { Coffee, Tea // 可按需添加更多杯型选项 }
- 将
Cup类里的TypeOfCup属性类型改为这个枚举:
public TypeOfCup TypeOfCup { get; set; }
错误2:运算符“.”无法应用于“void”类型的操作数
这个错误出在new liquid().WithDescription("Coffee")这行,原因有两个:
WithDescription方法返回类型是void,调用后没有返回值,无法作为参数传给AddItemAddItem方法是无参的,根本接收不了这个参数
修复步骤:
- 修改
WithDescription方法,让它返回当前的liquid实例(实现链式调用的常用写法):
public liquid WithDescription(string description) { this.description = description; return this; }
- 修改
Cup类的AddItem方法,让它接收一个liquid类型的参数:
public void AddItem(liquid item) { numItems += 1; // 可选:可以把item存入Cup的集合中,比如添加List<liquid> items字段来存储液体 }
修复后的完整代码
namespace Sample { class Program { static void Main(string[] args) { Cup coffeeCup = new Cup() { TypeOfCup = TypeOfCup.Coffee }; coffeeCup.AddItem(new liquid().WithDescription("Coffee")); } } // 定义枚举TypeOfCup public enum TypeOfCup { Coffee, Tea } class Cup { // 属性类型改为枚举TypeOfCup public TypeOfCup TypeOfCup { get; set; } public int numItems; public Cup() { numItems = 0; } // 修改AddItem方法,接收liquid参数 public void AddItem(liquid item) { numItems += 1; } } class liquid { public string description; public liquid() { } // 修改返回类型为liquid,支持链式调用 public liquid WithDescription(string description) { this.description = description; return this; } } }
给新手的实用建议
- 遇到“不存在名称”的错误,先检查是否定义了对应的类型(枚举、类、变量),C#是强类型语言,所有用到的类型都必须提前定义
- 链式调用(比如
A().B().C())要求每个方法都返回一个实例,不能是void - 类名建议用帕斯卡命名法(首字母大写),比如把
liquid改成Liquid,这是C#的通用编码规范,能提升代码可读性
内容的提问来源于stack exchange,提问作者waterbottle84
相关产品推荐
相关产品推荐

