c#进阶(2)之变量、常量和数据类型

变量:顾名思义是一种会变化量,常量:声明赋值之后就不会再次改变的量

变量

变量可以表示一个数值 、布尔值、字符串值或者一个类的对象。变量的值可以发生变。

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