类型
c#中的类型指代一种种类的数据。他们负责这种数据的处理,修改,储存。
同样的信息可以用不同类型储存,比如QQ号可以用数字储存,也可以用文字储存。
区别在于,数字可以处理加减乘除和比大小。
而文字可以裁剪,比如获得前三位,后四位QQ号。
而通常我们不会对QQ号进行加减乘除,而且更可能会要对他进行裁剪。
所以用文字储存QQ号更合适。
再例如,c#中有路径类。
他专门处理文件路径形式的文字,可以一键从这串文字中,获取文件的扩展名,父目录,根目录。
文字类也可以做到,但不是一键获取,而要麻烦的多。
而路径类对其他类型的文字几乎没有处理能力。
变量
变量可以储存一个值。通常用于表示一个未知的值。
例如用户在登录时输入的用户名和密码,我们肯定要用他的密码和我们的数据做比较。
但是编写程序的时候,我还不知道他会输入什么内容,不知道用什么文字来比较我们的数据。
所以需要变量,储存他输入的内容。
所有对变量做的事,也就是对他输入内容做的事。
定义变量
定义变量的方式是先写一个类型,然后给他起个名字。
例如:
string s;
定义变量会在内存为他申请一片空间,执行了操作,所以可以独立成句。
string就是我之前所说的文本类型,在c#里面的类型名字。
变量的类型一经定义就是确定的,不能更改。
在一个语句里可以同时定义多个变量,使用逗号隔开。
string s1,s2,s3;
赋值
变量赋值的语句是在变量后加等于号,然后把你要的值写上去。
s = "hello world";
在进行赋值时,值的类型需要能转化为变量的类型。
在声明变量时可以同时进行赋值操作。
string s4="hello";
变量只有在第一次定义的时候要带上类型。之后的修改不能加类型。
string s5="666";
s5="777";
s5="888";
使用
变量是值的容器,把变量放到写值都地方,就会解析这个变量装的值。
变量是程序指令的一部分,不要给变量打引号。
Console.WriteLine(s);
变量在赋值前不能被使用。而声明变量和赋值的顺序和你写的顺序是一样的。
就是说,上面的例子s3可以使用s1作为初始值(如果s1给了初始值的话)。
但s1不能用s3作为初始值。因为那时候s3不存在。
变量只储存值,不储存操作
变量是值的容器,用变量先把值装起来再访问变量,和直接访问值的效果是一样的。
例如:
string s = Console.ReadLine();
Console.WriteLine("你输入了" + s);
//上述等效于
Console.WriteLine("你输入了" + Console.ReadLine());
但是如果使用多次的话,情况就不一样了。
string s = Console.ReadLine();
Console.WriteLine("你输入了"+s);
Console.WriteLine("你输入了"+s);
Console.WriteLine("你输入了" + Console.ReadLine());
Console.WriteLine("你输入了" + Console.ReadLine());
Console.ReadLine会先①暂停程序,然后②允许用户输入文字直到按下回车,最后③获取用户输入的文字。
这个过程中,Console.ReadLine获取到的值是过程③中得到的值。赋值给变量也只是这个值而已。
并不会连着①和②都给变量。
所以下面的代码,会暂停程序两次,并且两次的结果可能是不一样的。
而上面的代码输入完一次后,会立刻出现两次的结果,而且一定是一样的。
标识符
变量的名字这个可以随便起的,我们称为标识符。
不止变量可以随便起名字,后面还有其他东西可以随便起名字。这些都叫标识符。
标识符名称限制
1.不能以数字开头
2.不能有特殊符号
3.不能和有效范围内的标识符重名
4.不能和关键字重复。
关键字
什么叫关键字呢?在你玩游戏时,进入设置里改键,有些键是不能设置成功的。
比如esc键。你按下他时,会执行他的作用:取消操作。而不是执行接受这个键,取消操作的优先级更高。
在c#里,这种优先级极高的命令就叫关键字。
string就是一个关键字。因为这个类型太重要了,所以给他做了一个关键字来表示这个类型。
类型名字是标识类型的作用,变量名字是标识变量的作用。
变量名可以和类型名重名,甚至跟他自己的类型重名。
关键字标识符
有时候你会接收其他程序发来的数据。然后别人的变量名字恰好在c#里是关键字。
这时候可以在关键字前面加@符号来变成标识符。这个符号本身不会被计入标识符中。
基本类型
这种类型在c#里的特征是,他们的类型都有对应的关键字,例如string类。
还有你使用的时候,会感觉他们不能再分。
例如时间类,可以细分为年,月,日,时,分,秒。
但是文字类,数字类这种东西,已经非常基本了,没法再分了。