第一次学习面向对象就接触了面向对象,说到构造函数,其实就是自定义函数,它是我们自己定义的函数。为创建的对象进行初始化,也就是说,不需要调用这个构造函数,这个构造函数就发生作用了。
本人通过自己的学习和别人的博客:C#之构造函数写下了自己的这篇博客。
举个例子:
//声明一个默认的构造函数
public class Operation //创建类
{
int i =0;
public Operation() //创建构造函数,构造函数的名字必须和类的名称一样。
{
i=2;
Console.WriteLine("I am Operation,{0}", j); //显示输出,输出结构。
}
static void Main(string[] args)
{
Operation pt = new Operation();
Console.Read();
}
//输出结果为 I am Operation,2
第二个带有参数的构造函数
//有参的函数和VB带参数的函数是一样的
public class Operation
{
int i=0;
public Operation (int j)
{
i=4;
console.writeLine("I am 有参构造函数{0}",i);
}
static void Main(string[] args)
{
Operation t=new Operation(1);
console.Read();
}
//输出结果为:I am 有参构造函数4
接下来还有静态构造函数,静态构造函数有它的特点:
1.静态构造函数既没有访问修饰符,也没有参数。
2.在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类,也就是无法直接调用静态构造函数,也无法控制什么时候执行静态构造函数。
2.在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类,也就是无法直接调用静态构造函数,也无法控制什么时候执行静态构造函数。
3.一个类只能有一个静态构造函数,最多只能运行一次。
4.静态构造函数不可以被继承。而普通的构造函数可以被继承。
举个例子:静态构造函数和有参构造函数一起使用时会怎样?
public class Operation
{
static i;
static Operation()
{
i=4;
console.writeLine("I am 静态构造函数:{0}",i);
}
public Operation(int j)
{
i=5;
console.writeLine("I am 有参构造函数:{0}",i);
}
static void Main(string [] args)
{
Operation number=Operation(5);
console.Read();
}
}
//输出结果为:I am 静态构造函数:4
I am 有参构造函数:5
所以只有实例化,就会运行静态构造函数。那么当我们声明一个无参的构造函数和一个静态的构造函数将会怎样呢。
看下面的代码
//静态构造函数和无参的构造函数代码
public class Operation
{
static i;
static Operation() //静态构造函数
{
i=4;
console.writeLine("I am 静态构造函数:{0}",i);
}
public Operation() //无参的构造函数
{
i=5;
console.writeLine("I am 无参构造函数:{0}",i);
}
static void Main(string [] args)
{
Operation number=Operation();
console.Read();
}
}
上面的结果会怎样呢?
总结:感觉自己对构造函数这方面还不是很熟悉,构造函数的作用自己还认识的不深,只知道在初始化这方面有很大的作用。不过自己又觉得初始化的时候完全可以直接赋值,为什么还要有个构造函数呢?希望在以后的学习中多多学习。另外希望大牛们多多回复。