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