C#.Net 静态构造器使用详解
因为这个构造函数是属于类的,而不属于任何一个实例,所以这个构造函数只会被执行一次,而且是在创建此类的第一个实例或引用任何静态成员之前,由.NET自动调用。
在程序中我们可以这样写:
C# Code:
class SimpleClass
{
static public Object object;
// Static constructor
static SimpleClass()
{
// Initialize static parameter
somthing
}
}
//也可以这样写,这和上面的做法其实没有区别:
class SimpleClass
{
static public Object object = new Object();
}
//来源:C/S框架网(www.csframework.com) QQ:1980854898
class SimpleClass
{
static public Object object;
// Static constructor
static SimpleClass()
{
// Initialize static parameter
somthing
}
}
//也可以这样写,这和上面的做法其实没有区别:
class SimpleClass
{
static public Object object = new Object();
}
//来源:C/S框架网(www.csframework.com) QQ:1980854898
在使用静态构造函数的时候应该注意几点:
1、静态构造函数既没有访问修饰符,也没有参数。
--因为是.NET调用的,所以像public和private等修饰符就没有意义了。
2、在创建第一个类实例或任何静态成员被引用时,.NET将自动调用静态构造函数来初始化类。
--也就是说我们无法直接调用静态构造函数,也不可能知道静态构造函数何时会被调用。
3、一个类只能有一个静态构造函数。
4、无参数的构造函数可以与静态构造函数共存。
--尽管参数列表相同,但一个属于类,一个属于实例,所以不会冲突。
5、最多只运行一次。
6、静态构造函数不可以被继承。
7、如果没有写静态构造函数,而类中包含带有初始值设定的静态成员,那么编译器会自动生成默认的静态构造函数。
调用例子:
C# Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace test1_constrator
{
class Program
{
static void Main(string[] args)
{
Class1 o1 = new Class1();
Class1 o2 = new Class1();
}
}
class Class1
{
private static int count = 0;
static Class1(){
count++;
System.Console.Write("Static" count.ToString());
}
public Class1()
{
count++;
System.Console.Write("Public" count.ToString());
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace test1_constrator
{
class Program
{
static void Main(string[] args)
{
Class1 o1 = new Class1();
Class1 o2 = new Class1();
}
}
class Class1
{
private static int count = 0;
static Class1(){
count++;
System.Console.Write("Static" count.ToString());
}
public Class1()
{
count++;
System.Console.Write("Public" count.ToString());
}
}
}
结果:count=3
本站责任编辑,原文:http://baike.baidu.com/view/2634573.htm

参考文档:
FastReport.NET自动文本宽度+自动换行+自动行高|C/S开发框架
FastReport.NET2023破解版去除水印DEMO VERSION (2025.1.14/2023.2.18版本)|C/S开发框架
C/S软件授权注册系统V3.0(Winform+WebApi+.NET8+EFCore版本)|C/S开发框架
.NET C/S架构软件用户授权设计方案(mac地址+白名单用户)|C/S开发框架
企业级C/S系统快速开发框架(Winform+.NET8+EFCore)|C/S开发框架
.NETCore WebApi运行报错:System.AggregateException:“Some services are not able to be constructed|C/S开发框架
C#.NET各版本常用语法糖大全(C#3~C#10)|C/S开发框架
CSFramework.EF数据库框架应用Schema测试多种数据库(.NET8+EFCore)|C/S开发框架
CSFrameworV6试用版开发指南 | 主程序初始化CSFramework.EF数据库框架(.NET8)|C/S开发框架
.NET Reactor(.NET混淆器)加壳软件使用|C/S开发框架
CSFramework开发框架使用.NET Reactor加壳软件导致多语言失效|C/S开发框架
.NETCore WebApi后端开发框架+达梦数据库测试报告|C/S开发框架
C#.NET调用达梦数据库的存储过程返回多张表|C/S开发框架
C#.NET 达梦数据库存储过程 获取OUT参数返回值|C/S开发框架
SqlServer数据类型、DbType类型、.NET类型与达梦数据类型关系表|C/S开发框架
.NET8 .NETCore运行环境下载|C/S开发框架
FastReport.NET自动文本宽度+自动换行+自动行高|C/S开发框架
FastReport.NET2023破解版去除水印DEMO VERSION (2025.1.14/2023.2.18版本)|C/S开发框架
C/S软件授权注册系统V3.0(Winform+WebApi+.NET8+EFCore版本)|C/S开发框架
.NET C/S架构软件用户授权设计方案(mac地址+白名单用户)|C/S开发框架
企业级C/S系统快速开发框架(Winform+.NET8+EFCore)|C/S开发框架
.NETCore WebApi运行报错:System.AggregateException:“Some services are not able to be constructed|C/S开发框架
C#.NET各版本常用语法糖大全(C#3~C#10)|C/S开发框架
CSFramework.EF数据库框架应用Schema测试多种数据库(.NET8+EFCore)|C/S开发框架
CSFrameworV6试用版开发指南 | 主程序初始化CSFramework.EF数据库框架(.NET8)|C/S开发框架
.NET Reactor(.NET混淆器)加壳软件使用|C/S开发框架
CSFramework开发框架使用.NET Reactor加壳软件导致多语言失效|C/S开发框架
.NETCore WebApi后端开发框架+达梦数据库测试报告|C/S开发框架
C#.NET调用达梦数据库的存储过程返回多张表|C/S开发框架
C#.NET 达梦数据库存储过程 获取OUT参数返回值|C/S开发框架
SqlServer数据类型、DbType类型、.NET类型与达梦数据类型关系表|C/S开发框架
.NET8 .NETCore运行环境下载|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内容管理系统 |
在线客服
