C#构造方法(构造函数)

  • 格式:pdf
  • 大小:104.80 KB
  • 文档页数:3

C#构造⽅法(构造函数)

构造⽅法特点:

⼀ ,与类同名

public class Product

{

public int ID { get; set; }

public String NAME { get; set; }

public Decimal Price { get; set; }

public ProductType type { get; set; }

public DateTime Birthday { get; set; }

public Product() //⽆参

{

ID = 1100;

NAME = "⼿机";

Price = 8888;

type = ProductType.⼿机;

Birthday = new DateTime(2019, 11, 1);

}

}

⼆,没有带返回值

三 ,⽆参构造函数

public Product() //⽆参

{

ID = 1100;

NAME = "⼿机";

Price = 8888;

type = ProductType.⼿机;

Birthday = new DateTime(2019, 11, 1);

}

四,有参构造函数,this当前对象

public Product(int id,string Name,int price, ProductType type)

{

this.ID = id;

this.NAME = Name;

this.Price = price; //this当前对象

}

不要声名重复的构造函数,私有的构造⽅法不能创建对象

调构造函数

Product s1 = new Product();//⽆参

Product s2 = new Product("2000","huawie", 5000,ProductType.服装, new DateTime(2019,2,3)); //有参

Console.WriteLine(s2.ID+s2.NAME+s2.Price+ProductType.服装);

Console.ReadLine();

Console.WriteLine(s1.ID);

Constructor

什么叫构造函数(构造器&&构造⽅法)

官⽅说法 :

在⼀个类中创建新的对象中的特殊⼩程序,它创建新的对象,并且实参会接受参数⽤以设定实例的数量。

构造器和实例⽅式类似,但是与其他的⽅法不同,构造器没有返回类型,不会被继承,且不会有范围修饰符,构造器的函数名称⼀般与它所属的的同名,它承担着对象数据

成员并创建类不变对象的任务;在类不变象⽆效的时候它会失败。⼀个正确编写的构造器会使它⽣成的保持在⼀个有效状态。必须在构造器内完但是如果提供了带参数的构

造函数所有初始化。

但是如果提供了带参数的构造函数,编译器就不会去找默认的构造函数了,没有定义时他才会去找,

如果试图使⽤⽆参数的构造函数去构造实例对象,编译器就回检查出错当然构造函数也可以⽤来传值,当然可以⽤private && protected 类型让不相关的类访问它们

public Mynubmer(int number)

{

number = _number;

}

var temp = new Mynuber();

//请提供对应的实参

以上没有定义任何的公有的或受保护类型的构造函数,这就使当前Class ⽆法实例化,

这样可以⽤⼀个公有的静态属性或者⽅法,以⽤来实例化该类

以下两种⽅法 是有效的

类做某种静态成员&&属性容器时,因此⽤于不会去实例它,在这种情况下,可以⽤static去修饰符声明类,当前修饰符,只能包含静态成员,不得实例化

希望类仅仅通过调⽤函数来实例化,这就是所谓的实例化类的⼯⼚⽅法,。单例模式的code如下

public class Singleton

{

private static Singleton s_ingleton;

private int _sate;

private Singleton(int sate)

{

_sate = sate;

}

public static Singleton instance

{

get

{

return s_ingleton ?? (s_ingleton = new Singleton(45));

}

}

}

这⾥的THIS关键字仅仅调⽤最匹配的那个构造函数,注意构造函数初始化器在构造函数的函数体之前执⾏,

public class Car

{

private string _description;

private uint _nWhereis;

public Car(string description,uint nWhereis)

{

description = _description;

nWhereis = _nWhereis;

}

public Car(string description) : this(description,4)

{

}

}

var mycat=new car("dsdsada");

构造初始化器可以包含对同⼀个类另外⼀个构造函数调⽤。也可以直接包含对直接弗雷的构造函数调⽤,但是应该是base了初始化器不能由多个调⽤。

构造函数是多数情况下是允许重载的,⼀个类允许接收参数不同种类的构造器存在。如JAVA &&C#使⽤单个类来具体的创建和返回新的实例构造器通常被称为抽象为⼯⼚

⽅法,⼀种同样⽤来创建新对象,但会同时使⽤多个类,或者⼀些诸如的分配⽅案来完成这⼀过程的⼦程序。

在C#中,静态构造器是⽤来初始化任何静态资料。静态构造函数也成为了类构造函数,由于类构造函数在⽣成的MSIL⾥名为“.CCOR”,因此也被称为cctor.

静态构造函数允许复杂的静态变量初始化

静态构造函数只会在第⼀访问被调⽤被访问,任何使⽤该类的操作)都会引发静态构造函数的执⾏。静态构造函数是的,并且是的。当⽤在泛型类中时,静态构造函数对于泛型的每个实例化都调⽤⼀次。静态变量也同样如此。

public class MyClass

{

private static int _A;

// Normal constructor

static MyClass()

{

_A = 32;

}

// Standard default constructor

public MyClass()

{

}

}

// Code somewhere

// Instantiating an object with the constructor above

// right before the instantiation

// The variable static constructor is executed and _A is 32

MyClass c = new MyClass();