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

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();
        }
    }
}

关键变化说明

  1. 构造函数精简:删掉了没用到的s和n参数,让构造函数只负责初始化operand1和operand2,更贴合实际需求。
  2. 实例化调用:在Main里先创建Calculator的实例calcInstance,再用这个实例调用WriteText和WriteNumber——这才是实例方法的正确打开方式。
  3. 冗余代码清理:删掉了Program类里没用到的静态字段operand1和operand2,让代码更整洁。

这样改完之后,两个编译错误就都消失啦,代码可以正常运行~

内容的提问来源于stack exchange,提问作者user8405

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 10:12:44