• 网络学院
  • 新手学堂
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
Visual
广告位
  站点:
  • 首 页
  • 最新软件
  • 最新文章
  • 国内软件
  • 国外软件
  • 汉化软件
  • 源码下载
  • 字体下载
Visual C#编程入门之类型和变量
软件发布 Visual C#编程入门之类型和变量
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回首页 | 文章首页 | 编程技术 | C#教程 | Visual C#编程入门之类型和变量

Visual C#编程入门之类型和变量

 

添加时间: 2007-7-16 3:27:00  作者: C#教程  阅读次数:113   来源: http://www.d9soft.com

 

 

       

  C#中有两种类型:值类型(value type)和引用类型(reference type)。值类型变量直接包括它们的数据,而引用类型变量存储的是它们的数据引用,后者被认为是对象。对于引用类型,有可能两个变量引用相同的对象,因此对其中一个变量的操作可能影响另一个对象引用的对象。对于值类型,每个变量都有自己的数据拷贝,因此对一个变量的操作不可能影响其他变量(ref和out参数变量例外)。

  C#的值类型进一步划分为简单类型(simple type)、枚举类型(enum type)和结构类型(struct type);C#的引用类型进一步划分为类类型(class type)、接口类型(interface type)、数组类型(array type)和委托类型(delegate type)。

  表1.1为整个C#类型系统的概述。

  表1.1  C#类型系统的概述

类    别

 描    述

 
值类型

 简单类型

 有符号整型:sbyte,short,int,long

 
无符号整型:byte,ushort,uint,ulong

 
Unicode字符:char

 
IEEE浮点型:float,double

 
高精度小数:decimal

 
布尔型:bool

 
枚举类型

 用户自定义类型enum E{…}

 
结构类型

 用户自定义类型struct S{…}

 
引用类型

 类类型

 所有其他类型的最终基类:object

 
Unicode字符串:string

 
用户自定义类型class C{…}

 
接口类型

 用户自定义类型interface I{…}

 
数组类型

 单维与多维数组,例如,int[]与int[,]

 
委托类型

 用户自定义类型delegate T D(…)

 
   

  8个整型类型分别支持8位、16位、32位和64位整数的有符号或者无符号格式。

  两个浮点类型,float和double,分别用32位单精度和64位双精度的IEEE754格式表示。

  decimal是128位的数据类型,适合财金和货币方面的计算。

  C#的bool类型用于表示布尔值——true或者false。

  在C#中,字符和字符串的处理使用Unicode编码。char类型表示16位的Unicode编码单元,string类型表示16位的Unicode编码单元的序列。

  表1.2总结了C#的数值类型。

表1.2  C#的数值类型
类    别

 位    数

 类    型

 范围/精度

 

有符号整型
 
8
 
sbyte
 
-128~127
 

16
 
short
 
-32 768~32 767
 

32
 
int
 
-2 147 483 648~2 147 483 647
 

64
 
long
 
-9 223 372 036 854 775 808~9 223 372 036 854 775 807
 

无符号整型
 
8
 
byte
 
0~255
 

16
 
ushort
 
0~65535
 

32
 
uint
 
0~4 294 967 295
 

64
 
ulong
 
0~18 446 744 073 709 551 615
 

浮点型
 
32
 
float
 
1.5×10-45~3.4×1038,7位精度
 

64
 
double
 
5.0×10-324~1.7×10308,15位精度
 

Decimal
 
128
 
decimal
 
1.0×10-28~7.9×1028,28位精度
 

   C#程序使用类型声明创建新类型。类型声明指定新类型的名字和成员。有5种C#类型可由用户自定义:类类型、结构类型、接口类型、枚举类型和委托类型。

  l         类类型定义了一个数据结构,它包括数据成员(字段)和函数成员(方法、属性及其他)。类类型支持继承和多态,即派生类能够扩展和特殊化基类的机制。

  l         结构类型与类类型相似,表示带有数据成员和函数成员的结构。然而,与类类型不同的是,结构是值类型,不需要堆分配。结构不支持用户指定的继承,所有的结构类型隐式地继承类型object。

  l         接口类型定义了一个约定,作为一组函数成员命名的集合。实现接口的类或结构必须提供接口函数成员的实现。接口可能从多个基接口继承而来,类或结构也可能实现多个接口。

  l         枚举类型是带有命名常量的独特类型。每个枚举类型有一个底层的类型,它必须是8个整型类型之一。枚举类型的值集与底层类型的值集相同。

  l         委托类型通过特定的参数列表和返回类型表示对方法的引用。委托将方法处理为实体,实体能够赋值给变量,并且当做参数传递。委托类似于某些程序语言中的方法指针,不同之处在于,委托是面向对象的,并且是类型安全的。

  C#支持任何类型的一维和多维数组。不同于其他类型,数组类型在它们被使用前不必声明。事实上,数组类型的构造是由某个类型名加上方括号。例如,int[]是int的一维数组,int[,]是int的二维数组,而int[][]是int的一维数组的一维数组。

   C#的类型系统是统一的,这样任何类型的值都能够被处理成对象。C#中每一个类型直接或者间接从object类继承而来,并且object是所有类型最终的基类。值类型的值可以通过执行装箱(boxing)和取消装箱(unboxing)的操作处理为对象。在下面的示例中,int被转换为object,然后又转回到int。


using System;

class Test
{
    static void Main(){
       int i=123;
       object o=i;     //装箱
       int j=(int)o;    //取消装箱
    }
}

 

  当值类型的值被强制类型转换为object时,就会分配持有该值的对象实例(也称为“箱子”),并且值也被拷贝到那个箱子里。相反地,当object引用被强制类型转换为值类型时,要检查这个引用类型是否是当前值类型的箱子,如果是的话,箱子中的值就会被拷贝出来。

  C#统一的类型系统意味着值类型能够“按需”转换为对象。由于这种统一性,使用object类型的通用类库,例如.net框架中的集合类,能够通过引用类型和值类型使用。

  C#中存在几种变量,包括字段、数组元素、局部变量和参数。变量表示了存储的位置,并且每一个变量都有一个类型,以决定什么样的值能够存入变量中,如表1.3所示。

表1.3  C#的变量
变量类型

 可能的内容

 

值类型
 
值类型的值
 

object
 
null引用、任何引用类型的对象引用或任何值类型装箱值的引用
 

类类型
 
null引用、该类类型实例的引用或由该类类型派生类的实例的引用
 

接口类型
 
null引用、实现该接口的类类型实例的引用或实现该接口的值类型装箱值的引用
 

数组类型
 
null引用、该数组类型实例的引用或兼容数组类型实例的引用
 

委托类型
 
null引用或该委托类型实例的引用
 

 

 

 

 

上下文章:

 

上一篇文章: Visual C#编程入门之表达式 下一篇文章: Visual C#编程入门之C#的程序结构

相关文章:

  • Oracle专家高级编程学习笔记[1]
  • Oracle入门——起动和关闭详解
  • 新手必须了解的oracle入门知识
  • 关于Oracle的入门话题
  • Oracle专家高级编程学习笔记[2]

相关软件:

  • Visual Code Smith(VcSmith) V3.1.6 中文版
  • 易语言汉语编程环境 V4.10
  • 超想中文汇编编程学习系统(中英对照版) V3.0
  • Visual Tcl V1.6.1.a1
  • VFP完全控制大、中、小型数据库编程接口 V12.0
  • 超想CLOGO汉语编程系统 V1.00

 

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

编程技术分类导航

  • ASP & ASP.NET教程
  • PHP教程
  • JSP教程
  • C/C++教程
  • VB & VB.NET教程
  • VC教程
  • Delphi教程
  • BCB教程
  • VFP教程
  • PB教程
  • JAVA教程
  • XML教程
  • C#教程
  • CGI教程

本类经典文章推荐

  • ADO.NET的开发场景及传统ADO的处理
  • 利用Visual C#实现Window管道技术
  • C#取得汉字的拼音的首字母
  • 使用C#编写DES加密程序的framework
  • Visual C#编写3D游戏框架示例
  • 用C#和本地Windows API操纵系统菜...
  • 在C#程序设计中使用Win32类库
  • Visual C#中调用Windows服务初探
  • 如何在C#的WinForm中制作饼状图和...
  • C#中实现DataGrid双向排序

C#教程阅读排行

  • 如何在C#的WinForm中制作饼状图和...
  • 浅析C#中图形编程
  • 用C#和本地Windows API操纵系统菜...
  • 彻底剖析C# 2.0泛型类的创建和使用
  • Visual C#编写3D游戏框架示例
  • 使用C#编写DES加密程序的framework
  • Visual C# 2005实现控件中捕获按键
  • Visual C#中调用Windows服务初探
  • C#如何在Form中嵌入并且操作Excel...
  • C#中利用mediaplayer打造mp3播放器

编程技术阅读总排行

  • VB入门教程之一
  • 第二章 PowerBuilder 入门之创建新...
  • Java连接数据库实例
  • 第一章 什么是PowerBuilder
  • VC++之List Box/Check List Box控...
  • VC++ List Ctrl控件
  • VC++ Combo Box/Combo Box Ex控件
  • 学C++不得不看的一篇文章
  • VB入门教程之二
  • VC++之Button控件

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有