【基元类型推荐】
推荐直接使用 FCL 类型。
【理由】
- 编码时不至于困惑string与String的使用。由于C#的stirng(一个关键字)直接映射到System.String(一个 FCL 类型),所以两者没有区别,都可以使用。不至于困惑int在32位操系统和64位操作系统上代表的整数不同。 有的开发人员认为int在32位操作系统上运行时,代表32位整数;而在64位操作系统上运行时,代表64位整数,这个观点完全错误。在C# 中,int 始终映射到System.Int32,所以不管在什么操作系统上运行,代表的都是32位整数。如果程序员习惯了再代码中使用Int32,像这 样的无解就不会产生了。
- C#中的关键字代表的意义在其他的语言中不一定成立。在C#中,long映 射到System.Int64,但在其他编程语言中,long可能就映射到Int16或Int32.例如,C++/CLI 就将long视为一个 Int32.习惯于用一种语言写程序的人在看到用另一种语言写的源代码时,很容易错误地理解代码的意图。事实上,大多数语言甚至不将long看作是一个关 键字,根本不会编译使用了它的代码。
-
代码一目了然,含义清晰。 FCL 的许多方法都将类型名称作为方法名的一部分。例如:BinaryReader类型提供的方法包括 ReadBoolean,ReadInt32,ReadSingle等;而System.Convert类型提供的方法包括 ToBoolean,ToInt32,ToSingle等。以下代码虽然语法没有问题,但包含float的那一行显得颇不自然,无法一下子判断该行的正确性:
BinaryReader br = ner BinaryReader(...);
float var0 = br.ReadSingle();//正确,但不自然
Single var1 = br.ReadSingle();//正确,而且一目了然
- 了解其他语言也可以面向CLR。 平时只用C#的许多程序员逐渐忘了还可以用其他语言写面向CLR的代码。因此,“C#主义”逐渐入侵类库代码。例如,Microsoft的FCL几乎是完 全用C#写的,FCL团队的开发人员现在向库中引入了像Array的GetLongLength这样的方法。该方法返回一个Int64值。这种值在C#中 是long,但在其他语言中不是(C++/CLI)。另一个例子是System.Linq.Enumerable的LongCount方法。
读经典——《CLR via C#》(Jeffrey Richter著) 笔记_基元类型(二)的更多相关文章
-
读经典——《CLR via C#》(Jeffrey Richter著) 笔记_基元类型(一)
[概念] 编译器直接支持的数据类型 [C#基元类型与对应的 FCL 类型] C#基元类型 FCL 类型 说明 sbyte System.Sbyte 有符号8位值 byte System.Byte 无符 ...
-
读经典——《CLR via C#》(Jeffrey Richter著) 笔记_基元类型(三)
[checked 和 unchecked 基元类型操作] 1.第一种使用方式 UInt32 invalid = )); //OK,不会抛异常 Byte b = ; b = ));//抛出Overflo ...
-
读经典——《CLR via C#》(Jeffrey Richter著) 笔记_dynamic基元类型
1.代码使用 dynamic 表达式/变量来调用一个成员时,编译器会生成特殊的 IL 代码来描述所需的操作.这种特殊的代码称为 payload(有效载荷).在运行时,payload 代码根据当前由 d ...
-
读经典——《CLR via C#》(Jeffrey Richter著) 笔记_发布者策略控制
在 读经典——<CLR via C#>(Jeffrey Richter著) 笔记_高级管理控制(配置)中,是由程序集的发布者将程序集的一个新版本发送给管理员,后者安装程序集,并手动编辑应用 ...
-
CLR via C#深解笔记三 - 基元类型、引用类型和值类型 | 类型和成员基础 | 常量和字段
编程语言的基元类型 某些数据类型如此常用,以至于许多编译器允许代码以简化的语法来操纵它们. System.Int32 a = new System.Int32(); // a = 0 a = 1 ...
-
[Clr via C#读书笔记]Cp5基元类型引用类型值类型
Cp5基元类型引用类型值类型 基元类型 编译器直接支持的类型,基元类型直接映射到FCL中存在的类型. 作者希望使用FCL类型名称而避免使用关键字.他的理由是为了更加的清晰的知道自己写的类型是哪种.但是 ...
-
读经典——《CLR via C#》(Jeffrey Richter著) 笔记_方法执行
[前言] 方法执行前,CLR 会检测方法内代码引用的所有类型.同时 CLR 会分配一个内部数据结构,用来管理对所有引用的类型的访问. 首次执行方法时,托管程序集会把 IL 转换成本地 CPU 指令,并 ...
-
读经典——《CLR via C#》(Jeffrey Richter著) 笔记_通过ILDasm.exe查看编译器如何将类型及其成员编译成元数据
[实例代码] using System; public sealed class SomeType //-------------1 { //嵌套类 private class SomeNestedT ...
-
读经典——《CLR via C#》(Jeffrey Richter著) 笔记_高级管理控制(配置)
一个应用程序的XML配置文件示例: <?xml version="1.0"?> <configuration> <runtime> <as ...
随机推荐
-
JQuery中的siblings()是什么意思
jQuery siblings() 方法返回被选元素的所有同胞元素,并且可以使用可选参数来过滤对同胞元素的搜索. 实例演示:点击某个li标签后将其设置为红色,而其所有同胞元素去除红色样式. 1.创建H ...
-
October 22nd Week 43rd Saturday, 2016
Beware the barrenness of a busy life. 当心忙碌的生活荒芜了人生. Recently I was busy in debugging an equipment, I ...
-
Linux内核简介
内核是提供硬件抽象层.磁盘及文件系统控制.多任务等功能的系统软件.一个内核不是一套完整的操作系统.一套基于Linux内核的完整操作系统叫作Linux操作系统,或是GNU/Linux.Linux内核的主 ...
-
女性社区TOP10
“女性和孩子的钱是世界上最好赚的”并不是一句空话.据统计,女性掌管着家庭70%的支出,如果你能让女性为你掏出腰包,那么你基本就掌控了一个家庭的大部分的消费. 有趣的是,女性还是一个喜欢分享的群体,他们 ...
-
JAVA之JDBC的简单使用(Mysql)
JDBC增删查改 昨天七七八八的关于Mysql的配置 和 基本使用也算是初步解决了,今天 抽空看了JAVA的JDBC(JAVA DATA BASE CONNECTION)我也不知道我全称拼写对对不对
-
[Swift]LeetCode988. 从叶结点开始的最小字符串 | Smallest String Starting From Leaf
Given the root of a binary tree, each node has a value from 0 to 25 representing the letters 'a' to ...
-
用SQL统计每分钟的访问量
以前面试没有理解到它什么意思的一道题,回忆中是这个题意 ), to_char(r.datelastmaint, 'yyyy-mm-dd hh24:mi'), sum(abs(r.tranamt)) f ...
-
openstack 实用命令
port 1.创建port(create) i.随机ip openstack port create --network public --fixed-ip subnet=sub-public '' ...
-
Compile、Make和Build的区别(as make, build, clean, run)
Compile.Make和Build的区别 - 熔 岩 - 51CTO技术博客 http://lavasoft.blog.51cto.com/62575/436216/ 针对Java的开发工具,一般都 ...
-
Kubernetes之利用prometheus监控K8S集群
prometheus它是一个主动拉取的数据库,在K8S中应该展示图形的grafana数据实例化要保存下来,使用分布式文件系统加动态PV,但是在本测试环境中使用本地磁盘,安装采集数据的agent使用Da ...