美文网首页
深入探讨C#中的结构struct

深入探讨C#中的结构struct

作者: 天lc呐 | 来源:发表于2017-11-30 15:31 被阅读0次

(引用:http://www.jb51.net/article/41820.htm)

一、结构和类的区别

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

    (引用:http://www.jb51.net/article/41820.htm) 一、结构和类的区别 1、结构...

  • 结构体

    C# 结构体 struct C#中结构类型和类类型在语法上非常相似,他们都是一种数据结构,都可以包括数据成员和方法...

  • C#结构体定义的详解

    C#结构体定义的情况: C#结构体定义也可以象类一样可以单独定义. class a{}; struct a{}; ...

  • dart 中 没有 struct, 如何解决引用问题...

    在 c# 中, struct 是值类型. 但是在 dart 中, 没有东西对标 struct. 以下片断是C# 代...

  • C#魔将-lesson_06-结构体

    结构体(Struct) 在 C# 中,结构体是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。s...

  • 十.Go结构struct

    结构struct Go中的struct与C中的struct相似,并且go没有class 使用type 结构名称 s...

  • C# 结构体 struct

    C#中结构类型和类类型在语法上非常相似,他们都是一种数据结构,都可以包括数据成员和方法成员。 结构和类的区别: 1...

  • 【OC梳理】结构体、枚举

    结构体(struct) OC中的结构体(struct),其实就是C语言中的结构体(struct)常见使用方法。OC...

  • C#结构体

    在 C# 中,结构体是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct 关键字用于创...

  • C语言中__packed 和位段的理解

    一:__packed typedef __packed struct struct常用在数据结构中。而struct...

网友评论

      本文标题:深入探讨C#中的结构struct

      本文链接:https://www.haomeiwen.com/subject/xrbvbxtx.html