C# 结构体的构造函数与初始化
2010-05-11 10:26
155 查看
C#中结构都有一个默认的不带参数的构造函数, 用于对结构的字段进行初始化,并且结构的默认构造函数不能被重写。
C#结构体构造函数之中定义的数组还可以通过构造函数传参数进行初始化操作!
1和2的作用相同,但是用2的方式定义的话需要选中 “项目属性/生成/允许不安全代码"。
以下是来自MSDN
结构与类共享大多数相同的语法,但结构比类受到的限制更多
在结构声明中,除非字段被声明为 const 或 static,否则无法初始化。
结构不能声明默认构造函数(没有参数的构造函数)或析构函数。
由于结构的副本由编译器自动创建和销毁,因此不需要使用默认构造函数和析构函数。实际上,编译器通过为所有字段赋予默认值(参见默认值表(C# 参考))来实现默认构造函数。结构不能从类或其他结构继承。
结构是值类型。如果从结构创建一个对象并将该对象赋给某个变量,则该变量包含结构的全部值。复制包含结构的变量时,将复制所有数据,对新副本所做的任何修改都不会改变旧副本的数据。由于结构不使用引用,因此结构没有标识;无法区分具有相同数据的两个值类型实例。C#结构体构造函数 中的所有值类型都继承自 ValueType,后者继承自 Object。
结构具有以下特点:
结构是值类型,而类是引用类型。
与类不同,结构的实例化可以不使用 new 运算符。
结构可以声明构造函数,但它们必须带参数。
一个结构不能从另一个结构或类继承,而且不能作为一个类的基。所有结构都直接继承自 System.ValueType,后者继承自 System.Object。
结构可以实现接口。
C#结构体构造函数可用作可为 null 的类型,因而可向其赋 null 值。
C#结构体构造函数之中定义的数组还可以通过构造函数传参数进行初始化操作!
1和2的作用相同,但是用2的方式定义的话需要选中 “项目属性/生成/允许不安全代码"。
以下是来自MSDN
结构与类共享大多数相同的语法,但结构比类受到的限制更多
在结构声明中,除非字段被声明为 const 或 static,否则无法初始化。
结构不能声明默认构造函数(没有参数的构造函数)或析构函数。
由于结构的副本由编译器自动创建和销毁,因此不需要使用默认构造函数和析构函数。实际上,编译器通过为所有字段赋予默认值(参见默认值表(C# 参考))来实现默认构造函数。结构不能从类或其他结构继承。
结构是值类型。如果从结构创建一个对象并将该对象赋给某个变量,则该变量包含结构的全部值。复制包含结构的变量时,将复制所有数据,对新副本所做的任何修改都不会改变旧副本的数据。由于结构不使用引用,因此结构没有标识;无法区分具有相同数据的两个值类型实例。C#结构体构造函数 中的所有值类型都继承自 ValueType,后者继承自 Object。
结构具有以下特点:
结构是值类型,而类是引用类型。
与类不同,结构的实例化可以不使用 new 运算符。
结构可以声明构造函数,但它们必须带参数。
一个结构不能从另一个结构或类继承,而且不能作为一个类的基。所有结构都直接继承自 System.ValueType,后者继承自 System.Object。
结构可以实现接口。
C#结构体构造函数可用作可为 null 的类型,因而可向其赋 null 值。
相关文章推荐
- 【结构体】中构造函数初始化变量及函数的使用
- C#新手入门代码 用构造函数初始化readonly字段
- C# 结构体初始化
- C#:用静态构造函数初始化静态成员
- C#箴言:用静态构造函数初始化静态成员
- C#箴言:使用构造函数初始化语句
- C#.NET中结构体与类的构造函数的异同
- C#箴言:用静态构造函数初始化静态成员
- 提高C#编程水平的50个要点 之十三“使用静态构造函数来初始化静态成员变量”
- 结构体中使用构造函数初始化
- 1024. Palindromic Number (25)--大整数的结构体用法(构造函数初始化)及运算
- C# 结构体初始化, 求为空
- c#中结构体structure初始化
- C#箴言:用静态构造函数初始化静态成员
- C# 小测试(一):类成员初始化与构造函数执行的顺序
- C# 静态代码块(静态构造函数)
- C++中为什么构造函数初始化列表
- 黑马程序员——C#枚举 结构体 this关键字 base关键字 值类型 引用类型 装箱和拆箱
- 结构体初始化
- C/C++ 通过初始化列表和构造函数内赋值初始化成员变量的区别