C#构造函数,静态构造函数,私有构造函数详解
静态构造函数: Static Constructor
私有构造函数: Private Constructor
静态构造函数用于初始化任何静态数据,或用于执行仅需执行一次的特定操作。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数。
静态构造函数具有以下特点:
1.静态构造函数既没有访问修饰符,也没有参数。
2.在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化 类。
3.无法直接调用静态构造函数。
4.在程序中,用户无法控制何时执行静态构造函数。
静态构造函数举列:
输出结果:
The static constructor invoked.
The Drive method invoked.
public class Bus
{
// Static constructor:
static Bus()
{
System.Console.WriteLine("The static constructor invoked.");
}
public static void Drive()
{
System.Console.WriteLine("The Drive method invoked.");
}
}
class TestBus
{
static void Main()
{
Bus.Drive();
}
}
{
// Static constructor:
static Bus()
{
System.Console.WriteLine("The static constructor invoked.");
}
public static void Drive()
{
System.Console.WriteLine("The Drive method invoked.");
}
}
class TestBus
{
static void Main()
{
Bus.Drive();
}
}
构造函数是在创建给定类型的对象时执行的 类方法。构造函数具有与类相同的名称,它通常初始化新对象的数据成员。
不带参数的构造函数称为“默认构造函数”。无论何时,只要使用 new 运算符实例化对象,并且不为 new 提供任何参数,就会调用默认构造函数。
public class Taxi
{
public bool isInitialized;
public Taxi()
{
isInitialized = true;
}
}
class TestTaxi
{
static void Main()
{
Taxi t = new Taxi();
System.Console.WriteLine(t.isInitialized);
}
}
{
public bool isInitialized;
public Taxi()
{
isInitialized = true;
}
}
class TestTaxi
{
static void Main()
{
Taxi t = new Taxi();
System.Console.WriteLine(t.isInitialized);
}
}
私有构造函数是一种特殊的实例构造函数。它通常用在只包含静态成员的类中。如果类具有一个或多个私有构造函数而没有公共构造函数,则不允许其他类(除了嵌套类)创建该类的实例。例如:
声明空构造函数可阻止自动生成默认构造函数。注意,如果您不对构造函数使用访问修饰符,则在默认情况下它仍为私有构造函数。但是,通常显式地使用 private 修饰符来清楚地表明该类不能被实例化。
当没有实例字段或实例方法(如 Math 类)时或者当调用方法以获得类的实例时,私有构造函数可用于阻止创建类的实例。如果类中的所有方法都是静态的,可考虑使整个类成为静态的。
class NLog
{
// Private Constructor:
private NLog() { }
public static double e = System.Math.E; //2.71828...
}
{
// Private Constructor:
private NLog() { }
public static double e = System.Math.E; //2.71828...
}
public class Counter
{
private Counter() { }
public static int currentCount;
public static int IncrementCount()
{
return ++currentCount;
}
}
class TestCounter
{
static void Main()
{
Counter.currentCount = 100;
Counter.IncrementCount();
System.Console.WriteLine("New count: {0}", Counter.currentCount);
}
}
{
private Counter() { }
public static int currentCount;
public static int IncrementCount()
{
return ++currentCount;
}
}
class TestCounter
{
static void Main()
{
Counter.currentCount = 100;
Counter.IncrementCount();
System.Console.WriteLine("New count: {0}", Counter.currentCount);
}
}
参考文档:
Activator.CreateInstance 使用指定类型的默认构造函数来创建该类型的实例
未找到类型“CSFrameworkV5.Models.dt_XXXXXX”上的构造函数
C#构造函数(构造方法)
C#/.NET 基础学习|C/S开发框架
C# 关键字const和static readonly 区别
C#.Net 静态构造器使用详解
[转帖]C# const和static readonly有什么区别?
C# DateTimeOffset 使用
C# .NET 入门概念与知识点总结|C/S开发框架
WinFramework添加工程项目Project新建业务模块(DLL库) |C/S开发框架
WinFramework轻量级开发框架 | 自定义窗体GridView表格样式布局|C/S开发框架
WinFramework轻量级开发框架 | 窗体权限机制|C/S开发框架
C#.NET Log4Net日志的基础用法-C/S开发框架
.NET Core Configuration类使用方法-C/S开发框架
GoF设计模式:原型模式(Prototype Pattern)—对象的克隆-C/S开发框架
GoF设计模式:建造者模式(Builder Pattern)—复杂对象的组装与创建-C/S开发框架
Activator.CreateInstance 使用指定类型的默认构造函数来创建该类型的实例
未找到类型“CSFrameworkV5.Models.dt_XXXXXX”上的构造函数
C#构造函数(构造方法)
C#/.NET 基础学习|C/S开发框架
C# 关键字const和static readonly 区别
C#.Net 静态构造器使用详解
[转帖]C# const和static readonly有什么区别?
C# DateTimeOffset 使用
C# .NET 入门概念与知识点总结|C/S开发框架
WinFramework添加工程项目Project新建业务模块(DLL库) |C/S开发框架
WinFramework轻量级开发框架 | 自定义窗体GridView表格样式布局|C/S开发框架
WinFramework轻量级开发框架 | 窗体权限机制|C/S开发框架
C#.NET Log4Net日志的基础用法-C/S开发框架
.NET Core Configuration类使用方法-C/S开发框架
GoF设计模式:原型模式(Prototype Pattern)—对象的克隆-C/S开发框架
GoF设计模式:建造者模式(Builder Pattern)—复杂对象的组装与创建-C/S开发框架
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
