C#中结构(struct)的部分初始化和完全初始化
2014-09-15 16:32
204 查看
假设有这样一个值类型struct。
□ 客户端,给所有struct字段初始化后调用方法
结果:50
□ 客户端,给部分struct字段初始化
结果:报错,使用了未赋值的局部变量。
可见:如果想调用struct实例的任何方法,需要给struct的所有字段初始化。
□ 客户端,通过构造函数初始化struct
结果:0
在这里:通过struct构造函数创建实例,实际上是给struct的所有字段赋上了初值0。
总结:在调用struct实例方法之前,必须给struct的所有字段赋上初值,即要求完全初始化,部分初始化是不允许的。要么通过"struct实例.字段名"给所有字段显式赋值,要么通过struct构造函数,给所有字段赋上默认值。
public struct Size
{
public int Length;
public int Width;
public int Area()
{
return Length*Width;
}
}
□ 客户端,给所有struct字段初始化后调用方法
class Program
{
static void Main(string[] args)
{
Size size;
size.Length = 10;
size.Width = 5;
Console.WriteLine(size.Area());
Console.ReadKey();
}
}
结果:50
□ 客户端,给部分struct字段初始化
class Program
{
static void Main(string[] args)
{
Size size;
size.Length = 10;
Console.WriteLine(size.Area());
Console.ReadKey();
}
}
结果:报错,使用了未赋值的局部变量。
可见:如果想调用struct实例的任何方法,需要给struct的所有字段初始化。
□ 客户端,通过构造函数初始化struct
class Program
{
static void Main(string[] args)
{
Size size = new Size();
Console.WriteLine(size.Area());
Console.ReadKey();
}
}
结果:0
在这里:通过struct构造函数创建实例,实际上是给struct的所有字段赋上了初值0。
总结:在调用struct实例方法之前,必须给struct的所有字段赋上初值,即要求完全初始化,部分初始化是不允许的。要么通过"struct实例.字段名"给所有字段显式赋值,要么通过struct构造函数,给所有字段赋上默认值。
相关文章推荐
- C#中结构(struct)的部分初始化和完全初始化实例分析
- C#2005 .NET3.0高级编程学习笔记————结构,部分类,静态类,Object类
- 快速撑握C#知识点系列之(struct)结构
- struct--------构造函数对结构体初始化的影响。
- C# 结构Struct可以继承接口Interface
- C#中的struct(结构)为值类型,struct类型全接触
- C#面象对象学习:类(class)与结构(struct)
- C#结构(Struct)
- C# 中的结构类型(struct)
- 初步学习“C#中的结构(struct)”
- [转]C#之结构Struct
- c#语言基础(6)----结构(struct)和类(class)的 区别
- C#中的struct(结构)为值类型,struct类型全接触
- C#基础系列(8)-- 第三部分 面向对象相关 -- 类与结构(1)
- C# 深入分析 结构struct
- 初步学习“C#中的结构(struct)”
- C#中的结构(struct)
- C# 编程指南(2):语言部分:程序的通用结构
- 关于C#中 struct使用new 初始化
- C# 中的结构类型(struct type)