当前位置: 首页 > article >正文

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

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

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

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

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

http://www.kler.cn/a/508092.html

相关文章:

  • 关于vite+vue3+ts项目中env.d.ts 文件详解
  • 正则表达式先入门,精不精通看修行
  • Redis集群部署详解:主从复制、Sentinel哨兵模式与Cluster集群的工作原理与配置
  • 【GIS操作】使用ArcGIS Pro进行海图的地理配准(附:墨卡托投影对比解析)
  • 1月13日学习
  • 解决 Mac 系统上的 node-sass 问题
  • 【达梦数据库(Oracle模式)】如何将视图中的数据导出
  • Python 爬虫学习指南与资料分享
  • rsync结合inotify实现文件实时同步
  • Lua项目下SSRF利用Redis文件覆盖lua回显RCE
  • 人工智能之深度学习_[3] -PyTorch自动微分模块和构建线性回归模型
  • 1.1初探大模型:起源与发展
  • 如何将数据库字符集改为中文,让今后所有的数据库都支持中文
  • 二十三种设计模式-代理模式
  • IF=24.5! 综述:机器人纹理识别触觉感知和机器学习进展
  • 请求响应-
  • 【算法】差分
  • python爬取Boss直聘,分析北京招聘市场
  • Android-V lmkd 中的那些属性值
  • WORD转PDF脚本文件
  • 如何攻击一个服务器(仅用于教育及娱乐实验目的)
  • 从零用java实现 小红书 springboot vue uniapp (10)系统消息模块 接收推送消息优化
  • 浅谈计算机网络04 | 现代网络需求与技术支撑
  • C++内存分布
  • C++异常处理详解
  • P6周:VGG-16算法-Pytorch实现人脸识别