写给笨蛋徒弟的学习手册(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,觉 ...
随机推荐
- mac book pro macOS10.13.3安装qt、qt creator C++开发环境,qt5.11.1,并解决cmake构建:qt mac this file is not part of any project the code
因为之前在Ubuntu下使用的是qtcreator开发,现在想在mac上装一个系统,因为许久未装了,还是花了点时间,不如写个博客,下次就更快安装了.在Mac OS X下使用Qt开发,需要配置Qt库和编 ...
- scrapy 爬取豆瓣互联网图书
安装scrapy conda install scrapy 生成一个scrapy项目 scrapy startproject douban settings文件 # -*- coding: utf-8 ...
- jenkins pipline 发送邮件
推荐一个好网站https://www.w3cschool.cn/jenkins/jenkins-e7bo28ol.html 获取git 用户信息// Get checkout output value ...
- C10K
参考 https://www.jianshu.com/p/ba7fa25d3590
- 使用netty HashedWheelTimer构建简单延迟队列
背景 最近项目中有个业务,需要对用户新增任务到期后进行业务处理.使用定时任务定时扫描过期时间,浪费资源,且不实时.只能使用延时队列处理. DelayQueue 第一想到的是java自带的延时队列del ...
- C++———Vector
#include<algorithm> #include <vector> #include <iostream> #include <stdio.h> ...
- 编写一个lambda,接受两个int,返回它们的和
void counter(int i, int b) { auto count = [i,b]{ return i + b; }; cout<< count(); } int main() ...
- leetcode 最大不重复字符
class Solution: def lengthOfLongestSubstring(self, s: str) -> int: if len(s) <= 1: return len( ...
- 解决overflow: hidden在移动端失效问题
1.问题:移动端出现弹窗后,滑动页面,页面底部出现空白 二.原因 经过分析,发现overflow: hidden;在移动端失效,导致弹窗出现时,滑动页面,页面底部出现空白. 三.解决 参考网址:htt ...
- 更换Appsecrect应该要注意的问题
1. 有时候因为需要,有些地方需要填写Appsecrect, 但是大家都知道微信公众平台上这个值 即使你自己是管理员是看不到的,只能重置,但是重置后,一定要记住刷新AccessToken啊,不然就尴尬 ...