变量
在编写程序时,我们不能直接预测运行时所有的可能性。
例如在登录时的用户名和密码,有无数种组合。我们无法写出所有可能的值。
变量可以动态地表示一个值。
定义变量
使用var + 标识符,并立刻赋值,可以声明一个变量。
var s = "hello";
引号包围表示他是一串文字。
Console.WriteLine()
表示执行Console类的WriteLine方法,是程序的一部分
"Console.WriteLine()"
表示的是一串文字。里面的东西不会执行。
使用变量
使用变量的语法是,直接写出变量的名字(标识符)。
变量是程序的一部分。所以使用的时候不要加引号包围。
Console.WriteLine(s);
Console.WriteLine(s + "world");
Console.WriteLine(s + "世界");
修改值
修改一个变量的值称之为赋值
。
语法和声明变量类似。但是不要最开头的那个var。
var表示声明一个变量,只有创建时才需要附带上。
s = "你好";
Console.WriteLine(s);
Console.WriteLine(s + "world");
Console.WriteLine(s + "世界");
变量保存值而不保存操作
变量是值的容器,用变量先把值装起来再访问变量,和直接访问值的效果是一样的。
例如:
var s = Console.ReadLine();
Console.WriteLine("你输入了" + s);
//-----------------------
Console.WriteLine("你输入了" + Console.ReadLine());
但是如果使用多次的话,情况就不一样了。
var s = Console.ReadLine();
Console.WriteLine("你输入了"+s);
Console.WriteLine("你输入了"+s);
//-----------------------
Console.WriteLine("你输入了" + Console.ReadLine());
Console.WriteLine("你输入了" + Console.ReadLine());
Console.ReadLine包含了
- 暂停程序
- 在用户按下回车时(且有输入)时获取值
- 把获取到的输入生成值,返回到程序中
上面的代码会暂停一次。然后把获取到的结果储存到变量中。
然后立刻输出两次这个变量。中间不会再暂停。
而下面的代码则会暂停两次,获取两次输入,所以可以输出不同的结果。
标识符
变量的名字这个可以随便起的,我们称为标识符。
不止变量可以随便起名字,后面还有其他东西可以随便起名字。这些都叫标识符。
但标识符不是真的可以随便起,他有一些限制。
- 不能以数字开头
- 不能有特殊符号
- 不能和有效范围内的标识符重名
- 不能和关键字重复。
关键字
什么叫关键字呢?在你玩游戏时,进入设置里改键,有些键是不能设置成功的。
比如esc键。你按下他时,会执行他的作用:取消操作。
而不是执行接受这个键,取消操作的优先级更高。
在c#里,这种优先级极高的命令就叫关键字。var就是一个关键字,你可以从颜色来区分他。
转义标识符
有时候你会接收其他程序发来的数据。然后别人的变量名字恰好在c#里是关键字。
这时候可以在关键字前面加@符号来变成标识符。这个符号本身不会被计入标识符中。
只有对是关键字的东西才能加@转义,如果不是关键字的标识符加这个会报错。
类型
C#是一种强类型语言。无论变量,常量,字面量,表达式,方法返回值。他们都有自己的类型
。
类型规定了一个值的职责
范围。像QQ号这种数据,可以用文字储存,也可以用数字储存。
文字类型负责查找,替换,裁剪等职责。而数字类的职责是数学运算,大小比较。
我们不太可能会QQ号进行数学运算或大小比较,而更可能裁剪。
所以尽管他是纯数字,却更适合用文字类型储存。
变量只能储存兼容的值
声明变量的语法,最开头的var其实应该填一个类型。
而var关键字的作用是帮你自动识别值的类型。
帮你省事了,但他的限制还在。文字类型的变量是无法接收数字值的。
var s = "hello";//文字类型的变量
s = 12;//类型不兼容
var i = 16;//数字类型的变量
i = "16";//类型不兼容
动态类型
c#是类型安全高效的语言。但安全是可以舍弃的。
使用动态类型,会真正跳过类型检查。
提供了一些便利性,但失去了安全性和基于类型的代码提示。
dynamic s = "hello";
s = 12;
dynamic i = 16;
i = "16";