变量:顾名思义是一种会变化量,常量:声明赋值之后就不会再次改变的量
变量
变量可以表示一个数值 、布尔值、字符串值或者一个类的对象。变量的值可以发生变。
1 2 3 4 5 6 7 8 9 10 11
| /* * 变量代码演示 */ int num1 = 2; Console.WriteLine(num1);//此时输出2 num1 = 12; Console.WriteLine(num1);//此时输出12 string author = "Yahue"; Console.WriteLine(author);//此时输出Yahue author = "Yahui.Wang"; Console.WriteLine(author);//此时输出Yahui.Wang
|
常量
既是在使用过程中不会发生变化的常量,通常在前面加上一个 关键字 const, 需要注意的是:
1.常量总是静态的,所以不需要在常量前面加上静态标示符 static
2.声明时就要赋值 而且赋值之后就不可以修改了
3.初始化不能从变量提取,只可以在变量前面加上readonly 一旦加上readonly之后变量就不可修改视为常量
1 2 3 4 5 6 7
| /** * 常量代码演示 * */ const int num2 = 2; Console.WriteLine(num2);//此时输出2 //num2 = 12;//无法编译通过 错误:赋值号左边必须是变量、属性或索引器 Console.WriteLine(num2);//此时输出2
|
c#的数据类型分为值类型和引用类型,他们的区别在于存储和取值的方式不一样。
值类型
直接储存值,直接储存在堆栈中 下面看段代码来说明int类型是值类型的
1 2 3 4 5
| /* * 值类型 * */ int i = 10;//开辟一个地方 存储i为10 int j = i;//在开辟一个地方存储j为10
|
引用类型
储存的是值的引用,储存在托管堆上 下面看段代码来更直观的看下引用类型 先定义一个对象 Person 对象是引用类型
1 2 3 4 5 6 7 8 9 10
| /// <summary> /// 抽象出来对象 人 /// </summary> public class Person { /// <summary> /// 这个人的年龄 int /// </summary> public int age { get; set; } }
|
在Main方法里调用
1 2 3 4 5 6 7 8 9 10 11
| /* * 引用类型 * **/ Person yahui = new Person(); yahui.age = 20; //下面不是不是真正的创建对象wang //而是 yahui 和wang 使用同一个引用 // yahui的值变了 相应的 wang的值也变了 Person wang = yahui; yahui.age = 30; Console.WriteLine(wang.age);//输出的是30
|
本文代码地址:https://github.com/yahue/JustDoIt-CSharp/tree/master/0002_Source/0002_Source