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

C#静态上下文用this报错及public构造函数修饰符无效问题求助

问题分析与解决

错误根源

你犯了两个基础语法错误:

  • 把Car类的构造函数写在了Program.Main静态方法内部,这完全不符合C#的类成员定义规则。构造函数必须属于它对应的类(也就是Car类),不能嵌套在其他方法里。
  • 静态方法(比如Main)里没有当前实例,所以this关键字根本没有意义,自然会报错;同时方法内部的代码不能加public这类访问修饰符,这也是语法不允许的。

修正步骤

  1. 移动构造函数到Car类内部:把public Car()从Main里拿出来,放到Car类的成员位置。
  2. 公开Car类:如果要在其他文件里使用这个类和它的构造函数,需要给Car类加上public修饰符(默认类是internal,只能在同一程序集内访问)。
  3. 删除Main里错误放置的构造函数代码。

修正后的完整代码

using System;

namespace SimpleClasses
{
    class Program
    {
        static void Main(string[] args) 
        {
            Car myNewCar = new Car();

            myNewCar.Make = "toyota";
            myNewCar.Model = "Cutlas Supreme";
            myNewCar.Year = 1986;
            myNewCar.Color = "Silver";

            Car myOtherCar = myNewCar;

            Console.WriteLine(myOtherCar.Make);

            Console.WriteLine("Before: " + myNewCar.Make);
            doByValue(myNewCar);
            Console.WriteLine("After By Value: " + myNewCar.Make);
            doByReference(ref myNewCar);
            Console.WriteLine("After By Reference: " + myNewCar.Make);

            static void doByValue(Car car)
            {
                car = new Car();
                car.Make = "BMW";
            }

            static void doByReference(ref Car car)
            {
                car = new Car();
                car.Make = "BMW";
            }

            Console.ReadLine();
        }
    }

    public class Car
    {
        public string Make { get; set; }
        public string Model { get; set; }
        public int Year { get; set; }
        public string Color { get; set; }

        // 构造函数移到这里,public修饰符有效
        public Car()
        {
            this.Make = "Nissan";
        }

        public double DetermineMarketValue()
        {
            return 0.0;
        }
    }
}

关键点说明

  • 现在public Car()构造函数属于Car类,this关键字可以正常指代当前创建的Car实例,用来初始化Make属性。
  • public修饰符在Car类和它的构造函数上都有效,这样其他文件只要引用了SimpleClasses命名空间,就能创建Car实例并使用这个构造函数。
  • 静态方法Main里不再有无效的this和非法的public修饰符,语法完全合规。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:11:07