我是靠谱客的博主 快乐信封,最近开发中收集的这篇文章主要介绍基元类型,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

什么是基元类型?
编译器直接支持的数据类型成为基元类型(Primitive type)。基元类型直接映射到Framework类库(FCL)里面中存在的类型。例如:C#中的int 直接映射到System.Int32类型。因此以下四行代码生成相同的IL:
int a=0;
System.Int32 a=0;
int a=new int();
System.Int32 a=new System.Int32();
下图展示了FCL类型在C#中对应的基本类型:
C#基元类型FCL类型说明
sbyteSystem.Sbyte有符号8位值
byteSystem.Byte无符号8位值
shortSystem.Int16有符号16位值
ushortSystem.UInt16无符号16位值
intSystem.Int32有符号32位值
uintSystem.UInt32无符号32位值
longSystem.Int64有符号64位值
ulongSystem.UInt64无符号64位值
charSystem.Char16位的Unicode字符
floatSystem.Single32位浮点数
doubleSystem.Double64位浮点数
boolSystem.Booleantrue/false
decimalSystem.Decimal128位高精度浮点值
stringSystem.String字符数组
objectSystem.Object所有类型基类型
dynamicSystem.Object对于CLR,和object完全一致,C#允许使用简单语法让dynamic参与动态调度
在开发程序中应该使用基元类型还是FCL类型?
C语言规范称:
  从风格上说,最好使用关键字,而不是使用完整的系统类型名称。
CLR via C#上说:使用FCL类型名称,完全不要使用基元类型,理由如下:
  1.C#的string(关键字)映射到System.String(一个FCL类型),所以两者没有区别。类似的,一些开发人员说如果在32位机器上运行int代表32位整数,在64位机器上跑代表64位整数,这个说法不正确,int是映射到System.Int32的,永远是32位整数,如果使用FCL类型,就不会有这样的误解了。
  2.C#的long映射到Sytem.Int64,但是C++/CLI的long是System.Int32。习惯一种语言的人看另外一种语言时候容易误解代码意图。而且很多语言甚至不把long当成关键字。
  3.FCL都将类型名称作为方法名的一部分。例如:BinaryReader类型包含ReadBoolean,ReadInt32,ReadSingle等,Convert类型包含ToBoolean,ToInt32,ToSingle,如以下float那一行代码很不容易理解。
BinaReader br=new BinaryReader();
float val=br.ReadSingle();
Single val=br.ReadSingle();
  4.平时只用C#的程序员经常忘记还可以使用其他语言写面向CLR的代码。比如FCL团队向库里引入了像Array的GetLongLength的方法,该方法返回Int64值,在C#中是long,但在其他语言中不是,再比如:System.Linq.Enumerable的LongCount方法。
 
个人觉得,如果了解了背后的原理,其实使用哪种方式都可以。

转载于:https://www.cnblogs.com/zhangqi0924/p/6109548.html

最后

以上就是快乐信封为你收集整理的基元类型的全部内容,希望文章能够帮你解决基元类型所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部