写给笨蛋徒弟的学习手册(3)—C#中15个预定义数据类型
在C#中学习中,你会很早的遇到预定义数据类型这个概念,但你有没有仔细想过它存在的意义?正所谓“存在即合理”,预定义数据类型的存在目的主要有俩个方面,一是为了增加程序的安全性,同时减轻编译器负担,加快编译速度;二是体现了语言互操作性中强数据类型的重要性。
首先,我们需要了解,C#中的预定义数据类型并非内置于C#中,而是包含于.NET中,这样做的原因,也体现出了微软对.NET框架所抱有的期望,这.NET框架下,不仅仅有C#一种高级语言,还有如VB.NET(从VB6升级到VB .NET 2002开始)、VC++.NET、Visual F#等。把预定义数据类型内置于.NET框架中,为语言的互操作打下了基础。而在.NET中,预定义数据类型的实现是通过CTS(通用类型系统)和CLS(公共语言规范)来实现的。 其中CTS的作用在于将其他语言的数据类型转换为预定义数据类型,而CLS的作用在于使编译器可以识别相应的数据类型,简单的来说,CTS是媒介,CLS是识别。
其次,我们需要知道,预定义数据类型主要分为俩种,即值类型和引用类型。它们之间的差距在与在内存中的存储位置,值类型存储在内存的栈上,而引用类型存储在内存的托管堆中,记得我和你讲的,.NET的一大特色是托管代码吗?这样做的目的在于,面向对象的语言允许用户自定义数据类型(用户自定的类Class),通过托管可以将C#转化为中间语言(IL),再由中间语言编译为机器代码(计算机可以识别的二进制编码0和1),引用类型的编译过程即为C#—>IL—>机器码,而值类型仅仅只有一个值(如int i = 1;),所以可以直接被转换为机器码。
最后,我们来认识15个预定义数据类型,其中13个为值类型,2个为引用类型。值类型又分为五类,有整数类型、浮点类型、字符类型、布尔类型以及decimal类型:
整数类型有:sbyte、short、int、long,byte、ushort、uint、ulong,其中byte为特例,byte代表8位无符号整数,范围为0~255,而sbyte代表8位有符号整数范围为-128~127,其他u-为无符号整数。
浮点类型有:float和double。
对于整数类型和浮点类型,会涉及到类型转换的问题(将int转为float等),在下一篇将讲到显式和隐式转换问题。
字符类型有:char,字符类型有一个很重要的应用是转义字符,也将在下一篇将讲到。
布尔类型有:bool,布尔类型的值只能为true和false,不可以用0和1来表示。
decimal类型有:decimal,decimal类型主要用于高精度的浮点表示,它可以表示小数点后28位,所以适合财务计算。
ps:汪汪汪汪汪汪~
写给笨蛋徒弟的学习手册(3)—C#中15个预定义数据类型的更多相关文章
- 写给笨蛋徒弟的学习手册(1)——完整C#项目中各个文件含义
Bin 目录用来存放编译的结果,bin是二进制binrary的英文缩写,因为最初C编译的程序文件都是二进制文件,它有Debug和Release两个版本,分别对应的文件夹为bin/Debug和bin/R ...
- Java8学习笔记(二)--三个预定义函数接口
三个函数接口概述 JDK预定义了很多函数接口以避免用户重复定义.最典型的是Function: @FunctionalInterface public interface Function<T, ...
- 自学笔记系列:《Python学习手册 第五版》 -写在开始之前
今年双十一,在当当网上买了这本书,很厚很厚的一本书,大概有将近1700页左右,的确是一个“大工程”, 关于这本书的学习,我想采用一种博客的方式进行,既是写给自己,也想分享给每一个对Python学习感兴 ...
- Centos学习手册——装逼宝典之强制重置密码
---恢复内容开始--- Centos学习手册by RuffianFish; 痞子鱼 近日闲的无聊,而最近又在搞Centos决定写个Centos详细的学习手册,以便自己在长时间没摸Centos的情况下 ...
- 写给java程序员的c++与java实现的一些重要细微差别-附完整版pdf学习手册
0.其实常规的逻辑判断结构.工具类.文件读写.控制台读写这些的关系都不大,熟悉之后,这些都是灵活运用的问题. 学习c/c++需要预先知道的一个前提就是,虽然有ANSI C标准,但是每个c/c++编译器 ...
- Git版本控制软件结合GitHub从入门到精通常用命令学习手册(转)
简要参考:http://www.tuicool.com/articles/mEvaq2 http://gitref.org/zh/index.html GIT 学习手册简介 本站为 Git 学习参考手 ...
- (转) 坚持完成这套学习手册,你就可以去 Google 面试了
坚持完成这套学习手册,你就可以去 Google 面试了 系统 指针 value Google 面试 阅读6138 本文为掘金投稿,译文出自:掘金翻译计划 原文地址:Google Interv ...
- 《Python学习手册》读书笔记
之前为了编写一个svm分词的程序而简单学了下Python,觉得Python很好用,想深入并系统学习一下,了解一些机制,因此开始阅读<Python学习手册(第三版)>.如果只是想快速入门,我 ...
- 《Python学习手册》读书笔记【转载】
转载:http://www.cnblogs.com/wuyuegb2312/archive/2013/02/26/2910908.html 之前为了编写一个svm分词的程序而简单学了下Python,觉 ...
随机推荐
- Linux yum源
(一)yum源概述 yum需要一个yum库,也就是yum源.默认情况下,CentOS就有一个yum源.在/etc/yum.repos.d/目录下有一些默认的配置文件(可以将这些文件移到/opt下,或者 ...
- java课程之团队开发冲刺1.2
一.总结昨天进度 1.三个任务都已经实现 2.使用时间:四个小时左右 二.遇到的困难 1.对Android原生的侧拉任务栏不了解,导致使用的时候出现了一部分问题 三.今天任务规划 1.对之前的程序重新 ...
- Git安装配置,和使用的简介
方案1:安装Git和TortoiseGit,使用TortoiseGit的图形化界面管理项目代码 材料准备: Git安装包 TortoiseGit安装包 注:包资源,可疑百度搜索,在Git官网下载 安装 ...
- java百度云推送
实体类: import java.io.Serializable; import javax.persistence.Entity; /** * * @Version : 1.0 * @Author ...
- mysql常用的统计类sql ,以及批量循环插入数据
今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ...
- Linux-01
Linux各目录的作用 /bin/ 存放系统命令的目录,普通用户和超级用户都可以执行.不过放在/bin下的命令在单用户模式下也可以执行 /sbin/ 保存和系统环境设置相关的命令,只有超级用户可以使用 ...
- 企业BGP网络规划案例(三)
路由选路 1.分支的办公流和生产流默认走联通MSTP线路,DC流默认走电信MSTP线路,当其中某条互联的链路down后才会进行流量切换 XRV1配置 ========================= ...
- C#窗体-猜数字
1.用到的控件:groupbox.label.textbox.button.menustrip等 2.实现的功能,随机产生一个数字,输入自己猜的答案,判断是否猜对. 3.运行结果 4.代码 using ...
- pandas的一些
在具体谈及骚操作之前先捋一遍基本的统计特征函数 方法名 函数功能 所属库 sum() 计算数据样本的综合(按照列计算) pandas mean() 计算数据样本的算术平均数 pandas var() ...
- input下拉框
用Html5和css.js写的,引用的bootstrap和jquery文件请各位看客自己去下载