详细介绍C#类型系统

开发 后端
这里介绍C#类型系统你学到如何使用不同的值和引用类型,加框和消框机制能为你作些什么。尽管这一章的不侧重于例子,但你可以学到很多重要的信息,关于如何创建现成类型的程序。

C#类型系统

既然你知道了怎样创建一个简单的C#程序,我将会给你介绍C#类型系统。在这一章中,你学到如何使用不同的值和引用类型,加框和消框机制能为你作些什么。尽管这一章的不侧重于例子,但你可以学到很多重要的信息,关于如何创建现成类型的程序。

值类型

各种值类型总是含有相应该类型的一个值。C#迫使你初始化变量才能使用它们进行计算-变量没有初始化不会出问题,因为当你企图使用它们时,编译器会告诉你。每当把一个值赋给一个值类型时,该值实际上被拷贝了。相比,对于引用类型,仅是引用被拷贝了,而实际的值仍然保留在相同的内存位置,但现在有两个对象指向了它(引用它)。C#的值类型可以归类如下:
◆简单类型(Simple types )
◆结构类型(struct types)
◆枚举类型(Enumeration types)

1.简单类型

在C#中出现的简单类型共享一些特性。第一,它们都是.NET系统类型的别名。第二,由简单类型组成的常量表达式仅在编译时而不是运行时受检测。最后,简单类型可以按字面被初始化。以下为C#简单类型归类:
◆整型
◆布尔型
◆字符型 (整型的一种特殊情况)
◆浮点型
◆小数型

2.结构类型

一个结构类型可以声明构造函数、常数、字段、方法、属性、索引、操作符和嵌套类型。尽管列出来的功能看起来象一个成熟的类,但在C#中,结构和类的区别在于结构是一个值类型,而类是一个引用类型。与C++相比,这里可以用结构关键字定义一个类。

使用结构的主要思想是用于创建小型的对象,如Point和FileInfo等等。你可以节省内存,因为没有如类对象所需的那样有额外的引用产生。例如,当声明含有成千上万个对象的数组时,这会引起极大的差异。

包含一个命名为IP的简单结构,它表示一个使用byte类型的4个字段的IP地址。我不包括方法等,因为这些工作正如使用类一样,将在下一章有详细的描述。

定义一个简单的结构

  1. using System;  
  2. struct IP{  
  3. public byte b1,b2,b3,b4;  
  4. }  
  5. class Test{  
  6. public static void Main(){  
  7. IP myIP;  
  8. myIP.b1 = 192;  
  9. myIP.b2 = 168;  
  10. myIP.b3 = 1;  
  11. myIP.b4 = 101;  
  12. Console.Write("{0}.{1}.",myIP.b1,myIP.b2);  
  13. Console.Write("{0}.{1}",myIP.b3,myIP.b4);  
  14. }  

3.枚举类型

当你想声明一个由一指定常量集合组成的独特类型时,枚举类型正是你要寻觅的。最简单的形式,它看起来可能象这样:enum MonthNames { January, February, March, April };

因我惯用缺省设置,故枚举元素是int型,且第一个元素为0值。每一个连续的元素按1递增。
◆如果你想给第一个元素直接赋值,可以如下把它设成1:enum MonthNames { January=1, February, March, April };
◆如果你想赋任意值给每个元素——甚至相同的值——这也没有问题:enum MonthNames { January=31, February=28, March=31, April=30 };
◆最后的选择是不同于int的数据类型。可以在一条语句中按如此赋值:enum MonthNames : byte { January=31, February=28, March=31, April=30 };
你可以使用的类型仅限于long、int、short和byte.

以上介绍C#类型系统

【编辑推荐】

  1. 介绍Mono C#编译器
  2. C#运算符重载学习总结
  3. 概述C#语言的结构体
  4. C#遗传算法学习笔记
  5. 讨论C#分部方法
责任编辑:佚名 来源: 百度空间
相关推荐

2011-06-08 13:35:18

C#数据类型

2009-08-10 16:30:56

C# BitmapDa

2009-08-12 15:34:40

C# DBNull

2009-08-26 17:31:59

C# const常量

2009-08-21 09:23:11

C# GDI+

2009-08-03 18:49:17

C#和Java

2009-08-20 15:26:42

C#循环语句

2009-08-24 18:21:23

C# ListView

2009-08-07 16:10:20

C#调用API

2009-08-21 15:16:23

C#使用指针

2009-08-13 13:38:30

C#命名规范

2009-09-11 11:17:04

C#引用类型

2009-08-06 14:59:36

C#编译器

2009-08-27 14:32:15

C#编写ActiveX

2009-08-25 17:28:23

C#创建DataSet

2009-08-27 17:31:44

C#创建Windows

2009-08-13 15:40:28

C#基础知识

2009-08-18 17:17:05

C#局部类型

2009-08-03 17:51:43

C#引用类型

2009-08-27 10:19:22

C#匿名类型
点赞
收藏

51CTO技术栈公众号