前言
在编程中,数据的存储和处理是必不可少的,C#语言中,通常通过常量和变量来管理这些数据,在本课中,将对常量和变量进行介绍。
一、变量
一个变量可以理解为提供程序操作的存储区的名字。
在C#中,变量用于存储和表示数据的标识符,在声明变量时,需要指定数据类型并可以选择性的赋予其一个初始值,并且这个数据类型决定了变量的内存大小和布局。
C#中提供的基本类型分为以下几类:
类型 | 举例 |
整数类型 | sbyte,byte,short,ushort,int,uint,long,ulong和char |
浮点型 | float、double |
十进制类型 | decimal |
布尔类型 | true或false |
空字符串 | string |
空类型 | 可为空值的类型,例如string? |
解释:char类型为什么属于整数类型呢?因为char类型用于表示单个16位的Unicode字符,底层存储的是一个ushort类型。当定义一个字符类型时,将其转换为整数类型就可以看到其对应的Ascii值。具体可以看Ascii码表。
char letter = 'A'
int asciiValue = letter; //转换为整数,结果是65
int num = 65;
char letter = (char)num; //结果是'A'
1.变量的定义
C#中变量定义的语法:
<data_type> <variable_list>;
在这里data_type必须是一个有效的C#数据类型,可以是char、int、float、double即上面结局到的数据类型。variable_list可以是一个或多个用逗号分隔的标识符名称。
int i, j, k;
char c, ch;
float f, salary;
double d;
2.变量的使用
定义变量后,可以通过变量名来访问和修改其值,
int age = 25;
//修改值
age = 30;
//访问
Console.WriteLine(age);
3.变量命名规则
变量可以包含字母、数字和下划线。
变量必须以字母或下划线开头。
变量名区分大小写。
避免使用C#关键字作为变量名。
命名规范:(X是大写,x是小写)
(1)XxxXxx 类名 命名空间 方法名
(2)IXxxXxx 接口名
(3)TXxxXxx 泛型类型名
(4)XxxXxxAttribute 特性
(5)XxxXxxProperty 依赖属性
(6)xxXxx 局部变量 私有字段,入参
(7)_xxXxx 使用依赖注入时更推荐
(8)s_xxXxx m_xxXxx 一般不使用 s_静态的 m_成员 t_临时的
(9)@关键字 @bool @object 使用关键字作为名称
(10)bool类型 IsXxx/HasXx
二、变量作用域
在C#中,变量的作用域决定了变量的可见性和生命周期。通常变量的作用域由花括号{}定义的代码块来确定。即定义变量时,该变量所属的一级花括号中均可使用该变量。
2.1 局部变量
在方法、循环、条件语句等代码块内声明的变量是局部变量,它们只在声明它们的代码块中可见。
//方法中
void Method()
{
int localVar = 10; //该变量只能在这个方法中使用,在{}外是可不使用的。
}
void Method1()
{
//循环
while(true)
{
int localVar = 20;//该变量只能在while的花括号中生效
}
//条件
if(true)
{
int localVar = 50;//该变量只能在if的花括号中生效
}
}
2.2全局变量
在类的成员级别定义的变量是成员变量,它们在整个类中可见。
class Myclass
{
int num =32 ;//该变量在该类中均可使用
}
2.3示例
public class Example
{
string Name; //在整个类中生效
int Age;//在整个类中生效
public void Mehtod(string description)
{
Name = "Jack";
Age = 18;
description = "是个男孩"; //只在该方法中生效
string sex = "男";//只在该方法中生效
}
public void Num()
{
for(int i = 0 ;i<50;i++)
{
Console.WriteLine(i);//i只在for循环汇总可用
}
}
}
三、常量
常量是固定值,程序执行期间不会改变,常量可以是任何基本数据类型。
3.1定义常量
在C#中,常量使用“const”关键字定义
const <data_type> <variable> = 初始值;
例如,定义一个圆周率常量‘PI’,
const double PI = 3.1415926;
在这个例子中:
double是常量的类型,表示存储的是双精度浮点型;
PI是常量的名称;
3.1415926是固定值,不能修改;
3.2常量的使用
常量在定义后不能被重新赋值。
double radius = 5.0;
double circumference = 2 * PI * radius;
Console.WriteLine("半径为 " + radius + " 的圆的周长是:" + circumference);
常量在修改值时会提示必须是变量、属性或索引器。
3.3 const关键字
-
编译时常量:
const
修饰的常量在编译时就确定了值。由于它们是编译时常量,C# 编译器会将这些值直接内联到使用它们的地方,这使得const
常量的访问速度非常快。 -
不可修改:
const
常量一旦定义,其值在程序的整个生命周期内都不能被修改。 -
必须初始化:在声明
const
常量时,必须同时进行初始化。未初始化的const
常量会导致编译错误。 -
只能用于基本数据类型:
const
关键字只能用于修饰基本数据类型(如int
、double
、char
、string
等)以及枚举类型。 -
类级别常量:
const
常量通常用于类的成员,表示该常量是类级别的,而不是实例级别的。即使没有实例化类,也可以通过类名直接访问const
常量。
注意:
不可更改性:因为 const
常量在编译时就已经被固定,因此不能在运行时更改其值。这种不变性使得 const
常量非常适合用于定义全局不变的值,如数学常量、物理常量或配置中的固定值。
静态特性:const
常量隐式地具有 static
特性,因此不能用实例名来访问它们,而是通过类名来访问。
编译时决定的值:由于 const
常量在编译时就已经确定,所以它们的值不能依赖于运行时的数据或状态。也就是说,不能使用方法调用或非 const
常量来为 const
赋值。
总结
常量在编写程序中提供了数据的不变性,确保了代码的安全性和可读性;变量则提供了灵活性,使程序能够动态响应不同的输入和条件。