以下内容均为基础薄弱或没有基础的同学而写
如有错误,各位高手还请留言指正!
注:小弟处女作,各位看官还请捧个人场。
一、开篇
C#作为一门编程语言,学习它之前,我们应了解一下有关计算机的一些基本知识。从计算机懂得的语言谈起会是个不错的主意。所以这一篇文章里,并不会提及C#的代码。只对一些概念性的知识进行阐述,对文字天然催眠者,可跳着阅读此章,但请别跳离文章。
1.关于0和1的那点事
计算机并不懂得英语,所以刚开始英语不好的同学,也不用太担心是否学不好C#。因为在计算机的世界里没有abc和123,更不会懂汉语。计算机能识别的只有0和1。
我们常常使用0~9这十个数字按逢十进一的规则来计数。这种计数方式称为十进制。
计算机只认识0和1,致使人们与计算机的交流需要建立在0和1的不同组合之上,这种组合被人称之为:二进制(机器码)。
二进制 八进制 十进制 十六进的相关信息,感兴趣的同学可以自己百度。
2.冯诺依曼定律
冯诺依曼定律最主要的是定义了计算机最为主要的三个部件:主板 内存 CPU
定律提出:把计算过程描述为由许多命令按一定顺序组成的程序,然后把程序和数据一起输入计算机,计算机对已存入的程序和数据处理后,输出结果。
而理论里所提的存储器、运算器、控制器、输入设备和输出设备之中,在程序和数据输入完毕之后。若无输出设备,计算过程并不会受影响。
因此确定了主板 内存 CPU是计算机的核心部件。
3.两种数据类型
在C#中,从大的方面看,将数据类型分为两种:
值类型:被分配到内存的堆栈中。
微软对值类型的说明如下:
基于值类型的变量直接包含值。将一个值类型变量赋给另一个值类型变量时,将复制包含的值。
值类型的变量直接包含其数据,值类型的每个变量都具有其自己的数据副本,
因此对一个值类型变量执行的操作不会影响另一个值类型变量。ref 和 out参数变量除外。
引用类型:被分配到内存的堆中。
微软对引用类的说明如下:
引用类型的变量存储对其数据的引用。对于引用类型,两种变量可引用同一对象;
因此,对一个引用类型变量执行的操作会影响另一个引用类型变量所引用的对象。
以上是对两种变量类型进行说明。在后面的几个内容中,我会用代码来演示这些区别。
4.数据类型的声明与定义
C#中有大量的关键字,你问我什么是关键字?
引用微软原话如下:
关键字是对编译器具有特殊意义的预定义保留标识符。它们不能在程序中用作标识符,除非它们有一个 @ 前缀。
值类型的定义需要以下关键字:
整 型
类型 | 范围 | 大小 |
---|---|---|
-128 到 127 | 有符号 8 位整数 | |
0 到 255 | 无符号 8 位整数 | |
U+0000 到 U+ffff | 16 位 Unicode 字符 | |
-32,768 到 32,767 | 有符号 16 位整数 | |
0 到 65,535 | 无符号 16 位整数 | |
-2,147,483,648 到 2,147,483,647 | 有符号 32 位整数 | |
0 到 4,294,967,295 | 无符号 32 位整数 | |
-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 | 有符号 64 位整数 | |
0 到 18,446,744,073,709,551,615 | 无符号 64 位整数 |
浮点型
类型 | 大致范围 | 精度 |
---|---|---|
±1.5e−45 到 ±3.4e38 | 7 位 | |
±5.0e−324 到 ±1.7e308 | 15 到 16 位 |
十进制小数:常用于货币计算中
类型 | 大致范围 | 精度 |
---|---|---|
decimal | (-7.9 x 1028 - 7.9 x 1028) / (100 - 28) | 28-29 个有效位 |
布尔型:bool
字符型:char
结构:struct
枚举:enum
引用类型的定义需要以下关键字:
类 :class
接 口:interface
委 托:ddelegate
字 符 串:string
编译检查:dynamic
根 类:object
如何声明一个具体的数据类型:
声明公式:
数据类型定义关键字 变量名称; PS:C#中一个语句的结束由;来确定
实例:
string typeDescription; //声明一个叫typeDescription的字符串变量
int typeDescriptionValue; //声明一个叫typeDescriptionValue的整型变量
如何定义一个具体的数据类型:
定义公式:
数据类型定义关键字 变量名称 = 值; PS:=读法:赋值
或者
数据类型定义关键字 变量名称;
变量 = 值;
实例:
string typeDecription="给字符串赋值"; //将指向 给字符串赋值 的引用赋值给typeDecription
int typeDecriptionValue;
typeDecriptionValue=90; //将 90 赋值给typeDecriptionValue
这样一看,小伙伴们是否对声明和定义有明显的概念了吗?
二者的区别在于:声明变量不会开辟内存空间,而定义变量会开辟出一个内存空间存放与之对应的数据。