C#结构实例简单描述

开发 后端
这里介绍C#结构实例,类与结构有很多相似之处:结构可以实现接口,并且可以具有与类相同的成员类型。然而,结构在几个重要方面不同于类:结构为值类型而不是引用类型,并且结构不支持继承。

在向大家详细介绍C#结构实例之前,首先让大家了解下类与结构有很多相似之处,然后全面介绍C#结构实例。

类与结构有很多相似之处:结构可以实现接口,并且可以具有与类相同的成员类型。然而,结构在几个重要方面不同于类:结构为值类型而不是引用类型,并且结构不支持继承。结构的值存储在“在堆栈上”或“内联”。细心的程序员有时可以通过聪明地使用结构来增强性能。

例如,将 Point 定义为结构而不是类在运行时可以节省很多内存空间。下面的程序创建并初始化一个 100 点的数组。对于作为类实现的 Point,出现了 101 个实例对象,因为数组需要一个,它的 100 个元素每个都需要一个。

  1. class Point  
  2. {  
  3.    public int x, y;  
  4.    public Point(int x, int y) {  
  5.       this.x = x;  
  6.       this.y = y;  
  7.    }  
  8. }  
  9. class Test  
  10. {  
  11.    static void Main() {  
  12.       Point[] points = new Point[100];  
  13.       for (int i = 0; i < 100; i++)  
  14.          points[i] = new Point(i, i*i);  
  15.    }  

如果将 Point 改为作为C#结构实现,如

  1. struct Point  
  2. {  
  3.    public int x, y;  
  4.    public Point(int x, int y) {  
  5.       this.x = x;  
  6.       this.y = y;  
  7.    }  

则只出现一个实例对象(用于数组的对象)。Point 实例在数组中内联分配。此优化可能会被误用。使用结构而不是类还会使应用程序运行得更慢或占用更多的内存,因为将C#结构实例作为值参数传递会导致创建结构的副本。

【编辑推荐】

  1. C# 3.0编译器简单介绍
  2. C#使用函数重载学习笔记
  3. Visual C#对数据库处理概述
  4. C#具有隐式类型声明描述
  5. C#使用SharpZipLib分析
责任编辑:佚名 来源: 51cto.com
相关推荐

2009-08-31 18:32:01

C# ListBoxE

2009-08-19 10:09:21

C#和C++

2009-08-21 17:31:58

C#垃圾回收

2009-09-02 13:01:11

C#多路广播

2009-08-13 17:58:34

C#存储过程

2009-09-07 14:33:02

C# switch语句

2009-09-16 09:01:40

C#多维数组

2009-08-28 09:30:48

C#命名属性

2009-09-07 15:31:49

C#支持事件

2009-08-27 10:01:52

C#自动属性

2009-09-01 17:08:35

C# Color枚举

2009-09-03 16:55:58

C#引用类型

2009-08-20 16:45:03

C#哈希值

2009-09-02 17:38:16

C#泛型支持

2009-08-26 14:54:23

C# new和over

2009-09-03 10:19:12

C#表单控件

2009-09-02 10:39:00

C#释放托管资源

2009-08-31 17:53:20

C#实现索引器

2009-09-17 16:28:27

C#参差数组

2009-09-01 18:36:35

C#委托实例
点赞
收藏

51CTO技术栈公众号