构造函数是类的一个特殊方法,在创建类的实例时将自动调用它。
C# 实例构造函数
C# 语言中有四种类型的实例构造函数。
- 缺省构造函数(默认构造函数)
- 参数化构造函数
- 复制构造函数
- 私有构造函数
C# 默认构造函数
没有参数的构造函数在C#中称为默认构造函数。每个类都有一个默认构造函数。当我们要初始化类成员的值时,使用默认构造函数。构造函数与类名同名。
C# 默认构造函数语法
public classname()
{
}
C# 默认构造函数示例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DefaultConstractor
{
class Rahul
{
int x,y;
public Rahul() //default contructor
{
x = 10;
y = 11;
}
public static void Main()
{
Rahul obj = new Rahul(); //an object is created , constructor is called
Console.WriteLine(obj.x);
Console.WriteLine(obj.y);
Console.ReadLine();
}
}
}
C#参数化构造函数
具有至少一个参数的构造函数称为C#中的参数化构造函数。
当我们希望将类的每个实例初始化为不同的值时,使用参数化构造函数。
C#参数化构造函数语法
public classname(parameter x)
{
}
C#参数化构造函数示例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Constructor
{
class Rahul
{
public int P, Q;
public Rahul(int x, int y) //decalaring Paremetrized Constructor with passing x,y parameter
{
P = x;
Q = y;
}
}
class MainClass
{
static void Main()
{
Rahul v = new Rahul(10, 11); //Creating object of Parameterized Constructor and passing values
Console.WriteLine("P is =" + v.P );
Console.WriteLine("Q is =" + v.Q);
Console.ReadLine();
}
}
}
复制构造函数
如果我们创建一个新对象并希望从现有对象复制值,则可以使用Copy构造函数。
复制构造函数的目的是将新实例初始化为现有实例的值。
复制构造函数示例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ProgramCall
{
class PEPSI
{
int A, B;
public PEPSI(int X, int Y)
{
A = X;
B = Y;
}
//复制构造函数
public PEPSI(PEPSI P)
{
A = P.A;
B = P.B;
}
public void Print()
{
Console.WriteLine("A = {0}\tB = {1}", A, B);
}
}
class CopyConstructor
{
static void Main()
{
PEPSI P = new PEPSI(10,11);
//调用复制构造函数
PEPSI P1 = new PEPSI(P);
P.Print();
P1.Print();
Console.Read();
}
}
}
私有构造函数
我们可以在C#中使用私有构造函数。私有构造函数是用私有说明符创建的。在C#语言中,我们不能创建一个至少包含一个私有构造函数的类的实例。它们通常用于只包含静态成员的类中。
私有构造函数示例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace defaultConstractor
{
public class like
{
private like() //私有构造函数定义
{
}
public static int currentview;
public static int visitedCount()
{
return ++ currentview;
}
}
class viewCountedetails
{
static void Main()
{
//like r = new like(); //错误
Console.WriteLine("-------Private constructor----------");
Console.WriteLine();
like.currentview = 100;
like.visitedCount();
Console.WriteLine("Now the view count is: {0}", like.currentview);
Console.ReadLine();
}
}
}
日期:2020-04-11 23:03:41 来源:oir作者:oir
