浅谈C#学习心得——数据类型

曾经读过的一本的技术书里是这样写道的:

 "  面向对象编程吸取了结构化编程的精华,并将它和一些新概念结合在一起,由此得到一个不同的、更好的组织程序方法。大多数情况下,程序有两种组织方法:以代码(执行操作的对象)为中心或者以数据(受到影响的对象)为中心。只使用结构化方法进行编程时,程序一般以代码为中心来组织。这种方法可以认为是“代码作用于数据”。

     面向对象程序使用的是另一种方法,它们以数据为中心组织程序,其关键原理体现在“数据控制对代码的访问”。在面向对象语言中,定义了数据和作用于该数据的相应代码,因此数据类型用于准确定义应用于这些数据的操作。 "   

——摘自《C#4.0 完全参考手册》(美)Herbert Schildt著


   C#是一种强类型语言,所有的操作都要经过编译器的类型检查,非法操作将不能通过编译,这样做有助于防止出现错误,增强了程序的可靠性。在C#中,所有的变量、表达式和值都是有其类型。

  C#把数据类型分为两种:值类型和引用类型  。

两种类型的区别在于变量保存的内容。对于值类型,变量保存的是实际值,而对于引用类型,则是保存的为值的引用。

在C#中,所有的数据类型都以与平台无关的方式定义,以备将来C#和.Net迁移到其他平台上


1、值类型:C#主要包括13种值类型,通常称他们为简单类型或者基本类型。

1)整型:有8个预定义整形类型。  如下表:

名称CTS类型说明范围
sbyteSystem.SByte8位有符号的整数-128~127(-2^7~2^7-1)
shortSystem.Int1616位有符号短整数-32768~32767(-2^15~2^15-1)
intSystem.Int3232位有符号的整数-2147483648~2147483647(-2^31~2^31-1)
longSystem.Int6464位有符号长整型-9223372036854775808~9223372036854775807
(-2^64~2^64-1)
byteSystem.Byte8位无符号整形0~255(0~2^8-1)
ushortSystem.UInt1616位无符号短整型0~65535(0~2^16)
uintSystem.UInt3232位无符号整型0~4294967295(0~2^32-1)
ulongSystem.UInt6464位无符号长整型0~18446744073709551615(0~2^64-1)

C#定义了各种整型的有符号形式和无符号形式。有符号整数和无符号整数的不同之处在于对整数高阶位的处理方式。对于有符号整数,编译器将产生代码,把整数的高阶位作为一个符号位,为0时表示正直,为1时表示负值。


2)浮点类型:分为单精度和双精度数值。如下表:

名称CTS类型说明位数范围
floatSystem.Single32位单精度浮点数71.5E-45~3.4E+38
doubleSystem.Double64位双精度浮点数15/165E-324~1.7E+308

如果在代码中对某个非整数值硬编码,则编译器以便假定该变量是double,如果想指定该值为float,可以在其后加上字符F(或f)。例如:  float  f=12.5F

3)decimal类型:表示精度更高的浮点数,如下表:

名称CTS类型说明位数范围
decimalSystem.Decimal128位高精度十进制数表示281E-28~7.9E+28

这种类型多用于财务计算,不是基本类型,所以在计算式使用该类型会有性能损失。

如果要把数字制定为decimal类型,可以在数字后面加上字符M(或m)。例如:decimal d=12.60M

4)bool类型:用于包含布尔值true或false,如下表:

名称CTS类型说明位数
boolSystem.Boolean表示true或falseNAtrue或false

注意:bool值和整数不能互相隐式转换,如果变量(或函数的返回类型)声明为bool类型,就只能使用值true或false。如果试图使用0表示false,非0值表示true,就会出错。
5)字符类型:为了保存单个字符值,如下表:

名称CTS类型
charSystem.Char表示一个16位的(Unicode)字符
注意:char类型的字面量是用单引号括起来,如果把字符放在双引号中,编译器会把它看作字符串,从而产生错误。

除了char表示字符字面量外,还可以用4位十六进制的Unicode值,带有数据类型转换的整数值或十六进制数表示它们。它们还可以用转义序列表示。

6)C#还定义了其他三种类别的值类型:枚举(enum)、结构(struct)和可空类型。


2、引用类型:C#支持两种预定义引用类型,如下表:

名称CTS类型说明
objectSystem.Object根类型,CTS中的其他类型都是从它派生而来的(包括值类型)
stringSystem.StringUnicode字符串
1)object类型:在C#中,object类型就是最终的父类型,所有内置类型和用户定义的类型都从它派生而来。

2)string类型:

虽然string类型的赋值更像值类型的赋值,但是string是一个引用类型。

string与引用类型有一些区别如:字符串是不可改变的。修改其中一个字符串,就会创建一个全新的string对象,而另一个字符串不发生任何变化。

字符串字面量放在双引号中。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值