C#中在Main方法创建类实例时遭遇CS0120与CS0169错误求助
解决CS0120和CS0169错误:实例方法调用与未使用参数问题
我来帮你快速搞定这两个编译错误,先拆解问题根源,再给你修正后的完整代码:
错误原因分析
- CS0120: 需要对象引用才能访问非静态成员:你已经把
WriteText和WriteNumber的static修饰符去掉了,这两个方法现在是实例方法,必须通过Calculator类的实例(也就是对象)来调用,而不能直接用类名Calculator调用——这是新手很容易踩的小坑哦。 - CS0169: 字段/参数从未使用过:你的
Calculator构造函数里定义了s和n两个参数,但在构造函数体内完全没用到它们,编译器会揪出这个“冗余”问题。
修正步骤与完整代码
我帮你做了核心修改,同时清理了没用的冗余代码:
using System; namespace CalculatorTest { class Calculator { public int operand1; public int operand2; // 移除未使用的s和n参数,构造函数只保留需要的operand1和operand2 public Calculator(int operand1, int operand2) { this.operand1 = operand1; this.operand2 = operand2; } public string WriteText(string s) { return s; } public int WriteNumber(int n) { return n; } } class Program { public static void Main(string[] args) { // 第一步:创建Calculator类的实例,传入构造函数要求的两个int参数(这里填10和20,你可以改成自己需要的值) Calculator calcInstance = new Calculator(10, 20); // 第二步:通过实例调用实例方法,而非直接用类名调用 string s = calcInstance.WriteText("Hello world!"); Console.WriteLine(s); int n = calcInstance.WriteNumber(53 + 28); Console.WriteLine(n); Console.Read(); } } }
关键变化说明
- 构造函数精简:删掉了没用到的
s和n参数,让构造函数只负责初始化operand1和operand2,更贴合实际需求。 - 实例化调用:在
Main里先创建Calculator的实例calcInstance,再用这个实例调用WriteText和WriteNumber——这才是实例方法的正确打开方式。 - 冗余代码清理:删掉了
Program类里没用到的静态字段operand1和operand2,让代码更整洁。
这样改完之后,两个编译错误就都消失啦,代码可以正常运行~
内容的提问来源于stack exchange,提问作者user8405
相关产品推荐
相关产品推荐

