CSharp(四) 变量和常量
变量和常量的定义和区别
变量
变量是一种存储数据的容器,里面的值可以改变,但是类型不能改变
变量和常量是两种不同的数据类型,变量可以改变,常量不能改变
变量的定义
在CSharp中规定 变量必须是先定义,再使用
- 语法如下
变量类型 变量名;
- 举例
int a;
- 多个变量,类型一样
变量类型 变量名1, 变量名2, 变量名3;
- 举例
int a, b, c;
变量命名规则
- 变量名必须以字母或下划线开头
- 变量名只能包含字母、数字和下划线
- 变量名不能是空格
- 变量名不能是保留字
- 变量名不能是CSharp关键字
使用变量
- 变量的声明与赋值
// 声明变量
int age; // 声明一个整数变量
string name; // 声明一个字符串变量
// 赋值
age = 25;
name = "张三";
// 声明时直接初始化
int score = 100;
double pi = 3.14159;
bool isActive = true;
- 隐式类型声明(var)
var count = 10; // 编译器推断为 int
var message = "Hello"; // 编译器推断为 string
var price = 19.99; // 编译器推断为 double
// var 必须在声明时初始化,编译器才能推断类型
变量的作用域
- 就近原则,括号里面的定义的变量 传递不到括号外面的变量
class Program
{
// 字段(类级别变量)
private int classLevelVariable = 0;
void Method()
{
// 局部变量
int localVariable = 10;
if (true)
{
// 块级变量
int blockVariable = 20;
// blockVariable 只能在这个代码块内使用
}
// 这里无法访问 blockVariable
}
}
常量
常量是一种存储数据的容器,里面的值不能改变,并且类型不能改变
const 常量
在CSharp中我们通常使用
const来定义常量
定义语法
- 语法如下
const 常量类型 常量名 = 值;
- 示例代码
// const 必须在声明时初始化,且值在编译时确定
const int MaxValue = 100;
const string AppName = "MyApplication";
const double PI = 3.1415926;
// 错误示例:const 不能延后赋值
// const int MinValue;
// MinValue = 0; // 编译错误!
readonly 常量
readonly 常量是一种在类中定义的常量,它的值只能在构造函数中初始化,并且在类的生命周期中不能改变
- 定义语法
readonly 常量类型 常量名 = 值;
- 示例代码
class Circle
{
// readonly 可以在声明时或构造函数中初始化
public readonly double Radius;
public Circle(double radius)
{
Radius = radius; // 在构造函数中赋值
}
}
// readonly 与 const 的区别:
// - const: 编译时常量,隐式 static
// - readonly: 运行时常量,每个实例可以有不同的值
变量与readonly与const的区别
| 特性 | 变量 | const | readonly |
|---|---|---|---|
| 值可否改变 | 可以 | 不可以 | 不可以 |
| 初始化时机 | 任何时候 | 声明时必须 | 声明时或构造函数中 |
| 类型推断 | 支持var | 必须显式声明 | 必须显式声明 |
| 内存分配 | 运行时 | 编译时嵌入 | 实例字段 |
| 可否为 static | 可以 | 隐式 static | 可以 |
练习题
class Program
{
// 常量
const double TaxRate = 0.13;
// 只读字段
readonly string _productName;
public Program(string productName)
{
_productName = productName;
}
static void Main()
{
// 变量
decimal price = 199.99m;
int quantity = 3;
// 使用常量计算
decimal total = price * quantity;
decimal tax = total * (decimal)TaxRate;
decimal finalAmount = total + tax;
Console.WriteLine($"商品: {new Program("笔记本电脑")._productName}");
Console.WriteLine($"总价: {total:C}");
Console.WriteLine($"税额: {tax:C}");
Console.WriteLine($"实付: {finalAmount:C}");
}
}