C#锐利体验(二)

在体验C#的锐利之前,关乎语言基本知识的掌握是必不可少的一环。由于C#基本语言很多源自C/C++,在这里对那些和C/C++类似的地方仅作简单介绍,我们将体验专注于那些区别于传统C/C++的关键的语言基础知识。

数据类型

C#语言的数据类型主要分为两类:值类型和引用类型。另外一种数据类型"指针"是为unsafe上下文编程专门设定的,其中unsafe上下文指对代码进行unsafe标示以满足利用指针对内存直接进行操作要求的C#非托管代码,这些代码将失去Microsoft.NET平台的垃圾收集等CLR性质,我们放在"COM互操作 非托管编程与异常处理"专题里阐述。值类型的变量本身包含他们的数据,而引用类型的变量包含的是指向包含数据的内存块的引用或者叫句柄。从下面这幅图中可以清晰地看出两者的差别:

引用类型带来的可能的问题便是当多个变量引用同样的内存块时,对任何一个引用变量的修改都会导致该对象的值的改变。null值表示引用类型没有对任何实际地址进行引用。

值类型可分为结构类型和枚举类型。结构类型包括简单类型和用户自定义结构类型。枚举类型和用户自定义结构类型我们将在"第九讲 结构,枚举,数组与字符串"专题里详细阐述。简单类型又可分为布尔类型和数值类型。C#语言中布尔类型严格与数值类型区分,只有true和false两种取值,不存在像C/C++里那样和其他类型之间的转换。数值类型包括整值,浮点和decimal三种类型。整值类型有sbyte,byte,short,ushort,int,uint,long,ulong,char共九种。除了char类型外,其他8种两两一组分别为有符号和无符号两种。浮点值有float和double两种。decimal主要用于金融,货币等对精度要求比较高的计算环境。下表是对这些简单类型的一个详细的描述:


简单类型


描 述


示 例

sbyte 8-bit 有符号整数 sbyte val = 12;
short 16-bit 有符号整数 short val = 12;
int 32-bit有符号整数 int val = 12;
long 64-bit有符号整数 long val1 = 12; long val2 = 34L;
byte 8-bit无符号整数 byte val1 = 12; byte val2 = 34U;
ushort 16-bit 无符号整数 ushort val1 = 12; ushort val2 = 34U;
uint 32-bit 无符号整数 uint val1 = 12; uint val2 = 34U;
ulong  64-bit 无符号整数 ulong val1 = 12; ulong val2 = 34U; ulong val3 = 56L; ulong val4 = 78UL;
float 32-bit单精度浮点数 float val = 1.23F;
double 64-bit双精度浮点数 double val1 = 1.23; double val2 = 4.56D;
l 布尔类型 bool val1 = true; bool val2 = false;
char 字符类型 ,Unicode 编码 char val = 'h';
decimal 28个有效数字的128-bit十进制类型 decimal val = 1.23M;

引用类型共分四种类型:类,接口,数组,委派。类除了我们可以定义自己的类型外,又包括两个比较特殊的类型object和string。object是C#中所有类型(包括所有的值类型和引用类型)的继承的根类。string类型是一个密封类型(不能被继承),其实例表示Unicode字符串,它和数组类型我们将放在"第九讲 结构,枚举,数组与字符串"中详述。接口类型定义一个方法的合同,我们将在"第七讲 接口 继承与多态"中讲述。委派类型是一个指向静态或实例方法的签名,类似于C/C++中的函数指针,将在"第八讲 委派与事件"中讲述。实际上我们将从后面的专题中看到这些类型都是类的某种形式的包装。

每种数据类型都有对应的缺省值。数值类型的缺省值为0或0.0,其中char的缺省为'\x0000'。布尔类型的缺省值为false。枚举类型的缺省值为0。结构类型的缺省值是将它所有的值类型的域设置为对应值类型的缺省值,将其引用类型的域设置为null。所有引用类型的缺省值为null。

不同类型的数据之间可以转换,C#的类型转换有隐含转换,明晰转换,标准转换,自定义转换共四种方式。隐含转换与明晰转换和C++里一样,数据从"小类型"到"大类型"的转换时为隐含转换,从"大类型"到"小类型"的转换为明晰转换,明晰转换需要如"(Type)data"一般的括号转换操作符。标准转换和自定义转换是针对系统内建转换和用户定义的转换而言的,两者都是对类或结构这样的自定义类型而言的。

时间: 2024-09-08 17:24:56

C#锐利体验(二)的相关文章

【教程】【转载】C#锐利体验(李建忠)—01

教程 C#锐利体验南京邮电学院 李建忠(cornyfield@263.net) C#语言是一门简单,现代,优雅,面向对象,类型安全,平台独立的一门新型组件编程语言.其语法风格源自C/C++家族,融合了Visual Basic的高效和C/C++强大,是微软为奠定其下一互联网霸主地位而打造的Microsoft.Net平台的主流语言.其一经推出便以其强大的操作能力,优雅的语法风格,创新的语言特性,第一等的面向组件编程的支持而深受世界各地程序员的好评和喜爱."它就是我多年来梦寐以求的计算机语言!&quo

【教程】【转载】C#锐利体验(李建忠)—04

教程  C#锐利体验 第四讲 类与对象[/b] 南京邮电学院 李建忠(cornyfield@263.net) 组件编程不是对传统面向对象的抛弃,相反组件编程正是面向对象编程的深化和发展.类作为面向对象的灵魂在C#语言里有着相当广泛深入的应用,很多非常"Sharp"的组件特性甚至都是直接由类包装而成.对类的深度掌握自然是我们"Sharp XP"重要的一环. 类 C#的类是一种对包括数据成员,函数成员和嵌套类型进行封装的数据结构.其中数据成员可以是常量,域.函数成员可以

【教程】【转载】C#锐利体验(李建忠)—03

教程  C#锐利体验 第三讲 Microsoft.NET平台基础构造 南京邮电学院 李建忠(cornyfield@263.net)抛开Microsoft.NET平台去谈C#是没有意义的,C#之"Sharp"也正在其后端强大的平台.仅仅拘泥于语法层面是体验不了C#的锐利之处的,C#程序很多诡秘之处必须依靠Microsoft.NET平台才能深度的掌握和运用.简单的讲,Microsoft.NET平台是一个建立在开放互联网络协议和标准之上,采用新的工具和服务来满足人们的计算和通信需求的革命性的

Shangducms1.1.0发布- 国内免费开源.Net CMS锐利体验

在Web 2.0大张旗鼓的今天,我们很难真正的简单的开发一种类似Web 1.0和Web 2.0的交互的网站,在国内也真正很难找到.Net的免费开源CMS,一般我们都会注意国外的开源项目,比如dnn,但是下载下来,要不就是难以上手和不灵活,要不就是版本过老,已经成为昨日黄花 自从2004年来提出的Web 2.0,从国内开始接受这个概念为止,Web 2.0的概念逐渐被国内的企业和个人用户所接受,除了国内有名的PHP平台下的Supersite,DeDecms,ASP.NET平台下又有更多供站长选择的开

【教程】【转载】C#锐利体验(李建忠)—02

教程  第二讲 C#语言基础介绍 南京邮电学院 李建忠(cornyfield@263.net) 在体验C#的锐利之前,关乎语言基本知识的掌握是必不可少的一环.由于C#基本语言很多源自C/C++,在这里对那些和C/C++类似的地方仅作简单介绍,我们将体验专注于那些区别于传统C/C++的关键的语言基础知识. 数据类型 C#语言的数据类型主要分为两类:值类型和引用类型.另外一种数据类型"指针"是为unsafe上下文编程专门设定的,其中unsafe上下文指对代码进行unsafe标示以满足利用指

C#锐利体验(三)

第三讲 Microsoft.NET平台基础构造 抛开Microsoft.NET平台去谈C#是没有意义的,C#之"Sharp"也正在其后端强大的平台.仅仅拘泥于语法层面是体验不了C#的锐利之处的,C#程序很多诡秘之处必须依靠Microsoft.NET平台才能深度的掌握和运用.简单的讲,Microsoft.NET平台是一个建立在开放互联网络协议和标准之上,采用新的工具和服务来满足人们的计算和通信需求的革命性的新型XML Web智能计算服务平台.它允许应用程序在因特网上方便快捷地互相通信,而

C#锐利体验

序言 C#语言是一门简单,现代,优雅,面向对象,类型安全,平台独立的一门新型组件编程语言.其语法风格源自C/C++家族,融合了Visual Basic的高效和C/C++强大,是微软为奠定其下一互联网霸主地位而打造的Microsoft.Net平台的主流语言.其一经推出便以其强大的操作能力,优雅的语法风格,创新的语言特性,第一等的面向组件编程的支持而深受世界各地程序员的好评和喜爱."它就是我多年来梦寐以求的计算机语言!"--很多资深程序员拿到C#都是这样的惊讶.从C#语言的名字(C Sha

jQuery Validate初步体验(二)_jquery

在上篇文章给大家介绍了jQuery Validate初步体验(一) ,本文继续给大家分享jquery validate相关知识,对本文感兴趣的朋友快来学习吧. 刚刚试了所谓的新版的用法.千万别问我是多新,因为我也不知道... <!DOCTYPE html> <html> <head> <script src="js/jquery.js"></script> <script src="js/jquery.vali

FWMX2004 之 Shapes 初体验(二)

大家好,欢迎大家回来继续和我一起早早体验FWMX2004之Shapes带给我们的全新体验! 在上一节,我们一起详细的研究了工具箱上的Shapes工具组的使用方法,操作技巧,本节我们就来看看Shapes浮动面板带给我们的新奇感受吧! 首先我们再次来看看Shapes浮动面板都有哪些新东西: 可以看到,Shapes面板里面目前共有9个形状组:Clock(钟表).Cog(齿轮).Cube(立方体).Cylinder(圆柱体).Frame(像框).Perspective(透视图).Tabs(制表符).Ta