如何引入初始化构造函数? C# CS0236

Posted

技术标签:

【中文标题】如何引入初始化构造函数? C# CS0236【英文标题】:How do I introduce an initialization constructor? C# CS0236 【发布时间】:2017-04-13 05:14:10 【问题描述】:

我遇到了多个错误,但我不知道为什么。错误是在GetArea 方法之后引入的。

namespace Lesson02

    class Rectangle
    
        static void Main(string[] args)
        

        

        private double length;
        private double width;
        public Rectangle(double l, double w)

        
            length = l;
            width = w;

        

        public double GetArea()

        
            return length * width;
        

       public Rectangle rect = new Rectangle(10.0, 20.0);
       double area = rect.GetArea();
       Console.WriteLine("Area of Rectagle: 0", area);

【问题讨论】:

Console.WriteLine("Area of Rectagle: 0", area); 应该是方法中 请编写您的完整类或其中的可编译部分。并提及你得到了什么exat错误。 我确实把所有的东西都写完了,而且我确实在问题的标题中包含了我得到的错误。感谢您的回答,但我几乎可以肯定他们已经多次看到 Console.WriteLine 的“外部”方法。 【参考方案1】:

你不能只执行

Console.WriteLine("Area of Rectagle: 0", area);

在类范围内,就好像它是声明。将其移至Main 方法:

namespace Lesson02

    class Rectangle
    
        // Method, here we execute
        static void Main(string[] args)
         
            // Executions are within the method
            Rectangle rect = new Rectangle(10.0, 20.0);
            double area = rect.GetArea();
            Console.WriteLine("Area of Rectagle: 0", area);
        

        // Declarations
        private double length;
        private double width;

        public Rectangle(double l, double w)
        
            length = l;
            width = w;
        

        public double GetArea()
        
            return length * width;
        
    

【讨论】:

感谢您的帮助。【参考方案2】:

如评论中所述,您将类主体与程序代码混合在一起。将所有内容都放在一个类中也是一个坏主意。

你的 Rectangle 类应该是独立的:

public class Rectangle

    private double length;
    private double width;

    public Rectangle(double l, double w)
    
        length = l;
        width = w;

    

    public double GetArea()
    
        return length * width;
    

和你的程序代码分开:

public class Program

    static void Main(string[] args)
    
        Rectangle rect = new Rectangle(10.0, 20.0);
        double area = rect.GetArea();
        Console.WriteLine("Area of Rectagle: 0", area);
    

【讨论】:

谢谢米萨。我真的很感激。【参考方案3】:

要么将类 Rectangle 设为公共,否则更改 公共矩形矩形 = 新矩形(10.0,20.0); as 矩形 rect = new Rectangle(10.0, 20.0);

    public class Rectangle
    

        private double length;
        private double width;
        public Rectangle(double l, double w)
        
            length = l;
            width = w;
        

        public double GetArea()
        
            return length * width;
        

    
    static void Main(string[] args)
    
         Rectangle rect = new Rectangle(10.0, 20.0);
        double area = rect.GetArea();
        Console.WriteLine("Area of Rectagle: 0", area);
    

【讨论】:

以上是关于如何引入初始化构造函数? C# CS0236的主要内容,如果未能解决你的问题,请参考以下文章

自动属性无法在 C# 实例构造函数中初始化

C#在自己的构造函数之后调用基类的构造函数?

C# 构造函数总结

C# 构造函数总结

C# 静态类构造函数

java中一个对象的初始化过程