C#实例化类,当类名和方法一样或者不一样时运行流程

发布于:2025-02-10 ⋅ 阅读:(108) ⋅ 点赞:(0)

结论
方法名称与类名相同时,方法称之为构造函数,在初始化类的时候就调用这个同名函数。
若不同,方法称之为普通方法,需要显式调用这个不同名函数。

可以换一个方式理解,其实同名方法不管是否在类中再次创建,其实在调用类的时候就该类就已经生成了同名的构造函数,只是该构造函数没有任何内容。我们类中创建这个构造函数时,其实也就相当于重构函数

证明
该例子是隐式调用重构的和类名一样的方法

using System;

public class ConstTest 
{
    class SampleClass
    {
        public int x;
        public int y;
        public const int c1 = 5;
        public const int c2 = c1 + 5;

        public SampleClass() 
        {
            x = 11; 
            y = 22;
			Console.WriteLine("x = {0}, y = {1}",x, y);
        }
    }

    static void Main()
    {
        new SampleClass();
        Console.WriteLine("c1 = {0}, c2 = {1}", 
                          SampleClass.c1, SampleClass.c2);
    }
}

该例子是隐式调用重构的和类名一样的方法,并传参,参数直接传入到构造函数中

using System;

public class ConstTest 
{
    class SampleClass
    {
        public int x;
        public int y;
        public const int c1 = 5;
        public const int c2 = c1 + 5;

        public SampleClass(int p1, int p2) 
        {
            x = p1; 
            y = p2;
        }
    }

    static void Main()
    {
        SampleClass mC = new SampleClass(11, 22);
        Console.WriteLine("x = {0}, y = {1}", mC.x, mC.y);
        Console.WriteLine("c1 = {0}, c2 = {1}", 
                          SampleClass.c1, SampleClass.c2);
    }
}

该例子是显式调用和类名不同的普通方法

using System;
namespace RectangleApplication
{
    class Rectangle
    {
        // 成员变量
        double length;
        double width;
        public void Acceptdetails()
        {
            length = 4.5;    
            width = 3.5;
        }
        public double GetArea()
        {
            return length * width;
        }
        public void Display()
        {
            Console.WriteLine("Length: {0}", length);
            Console.WriteLine("Width: {0}", width);
            Console.WriteLine("Area: {0}", GetArea());
        }
    }
    
    class ExecuteRectangle
    {
        static void Main(string[] args)
        {
            Rectangle r = new Rectangle();
            r.Acceptdetails();
            r.Display();
            Console.ReadLine();
        }
    }
}

网站公告

今日签到

点亮在社区的每一天
去签到