手机
当前位置:查字典教程网 >编程开发 >C#教程 >深入探讨C#中的结构struct
深入探讨C#中的结构struct
摘要:一、结构和类的区别1、结构的级别和类一致,写在命名空间下面,可以定义字段、属性、方法、构造方法也可以通过关键字new创建对象。2、结构中的字...

一、结构和类的区别

1、结构的级别和类一致,写在命名空间下面,可以定义字段、属性、方法、构造方法也可以通过关键字new创建对象。

2、结构中的字段不能赋初始值。

3、无参数的构造函数无论如何C#编译器都会自动生成,所以不能为结构定义一个无参构造函数。

4、在构造函数中,必须给结构体的所有字段赋值。

5、在构造函数中,为属性赋值,不认为是对字段赋值,因为属性不一定是去操作字段。

6、结构是值类型,在传递结构变量的时候,会将结构对象里的每一个字段复制一份拷贝到新的结构变量的字段中。

7、不能定义自动属性,因为字段属性会生成一个字段,而这个字段必须要求在构造函数中,但我们不知道这个字段叫什么名字。

8、声明结构体对象,可以不使用new关键字,但是这个时候,结构体对象的字段没有初始值,因为没有调用构造函数,构造函数中必须为字段赋值,所以,通过new关键字创建结构体对象,这个对象的字段就有默认值。

9、栈的访问速度快,但空间小,堆的访问速度慢,但空间大,当我们要表示一个轻量级的对象的时候,就定义为结构,以提高速度,根据传至的影响来选择,希望传引用,则定义为类,传拷贝,则定义为结构。

二、Demo

复制代码 代码如下:

struct Point

{

public Program p;

private int x;

public int X

{

get { return x; }

set { x = value; }

}

private int y;

public int Y

{

get { return y; }

set { y = value; }

}

public void Show()

{

Console.Write("X={0},Y={1}", this.X, this.Y);

}

public Point(int x,int y)

{

this.x = x;

this.y = y;

this.p = null;

}

public Point(int x)

{

this.x = x;

this.y = 11;

this.p = null;

}

public Point(int x, int y, Program p)

{

this.x = x;

this.y = y;

this.p = p;

}

}

class Program

{

public string Name { get; set; }

static void Main(string[] args)

{

//Point p = new Point();

//p.X = 120;

//p.Y = 100;

//Point p1 = p;

//p1.X = 190;

//Console.WriteLine(p.X);

//Point p;

//p.X = 12;//不赋值就会报错

//Console.WriteLine(p.X);

//Point p1 = new Point();

//Console.WriteLine(p1.X);//此处不赋值不会报错,原因见区别8

Program p = new Program() { Name="小花"};

Point point1 = new Point(10, 10, p);

Point point2 = point1;

point2.p.Name = "小明";

Console.WriteLine(point1.p.Name);//结果为小明,分析见下图

}

}

【深入探讨C#中的结构struct】相关文章:

深入解析c#中枚举类型的定义与使用

深入解析:打造自动消失的对话框

深入分析C#中WinForm控件之Dock顺序调整的详解

深入多线程之:深入分析Interlocked

C#.net中的类型转换详细介绍

对c#中委托的理解

深入反射生成数组的详解

深入C#中使用SqlDbType.Xml类型参数的使用详解

深入DropDownList用法的一些学习总结分析

深入理解C#索引器(一种支持参数的属性)与属性的对比

精品推荐
分类导航