1. 变量概述
变量是程序中用于存储数据的容器,在C#中,每个变量都有一个类型,决定了它可以存储的数据种类和大小。变量的基本特征包括:
- 变量名:用于标识变量的唯一名称
- 数据类型:决定变量可以存储的数据类型
- 值:变量存储的实际数据
2. 变量的声明
在C#中,声明变量的基本语法如下:
数据类型 变量名;
例如,声明一个整数变量:
int age;
2.1 变量的初始化
声明变量的同时可以进行初始化:
数据类型 变量名 = 值;
例如:
int age = 25;
string name = "张三";
double salary = 5000.50;
bool isStudent = true;
2.2 变量命名规则
- 变量名必须以字母、下划线(_)或@符号开头
- 变量名可以包含字母、数字、下划线
- 变量名区分大小写
- 变量名不能是C#关键字
- 变量名应具有描述性,便于理解
3. 常量概述
常量是在程序执行过程中其值不能改变的量。使用常量可以提高代码的可读性和可维护性,避免魔法数字。
4. 常量的声明
在C#中,使用const关键字声明常量:
const 数据类型 常量名 = 值;
例如:
const double PI = 3.14159;
const int MAX_AGE = 120;
const string COMPANY_NAME = "微软";
4.1 常量的特点
- 常量必须在声明时初始化
- 常量的值在程序执行过程中不能修改
- 常量通常使用大写字母命名,单词之间用下划线分隔
- 常量的作用域与变量相同
5. 变量的作用域
变量的作用域指的是变量可以被访问的代码范围:
5.1 局部变量
在方法、代码块或循环内部声明的变量,只能在声明它的范围内访问:
void ExampleMethod()
{
int localVariable = 10; // 局部变量
Console.WriteLine(localVariable); // 可以访问
}
void AnotherMethod()
{
Console.WriteLine(localVariable); // 错误:无法访问
}
5.2 成员变量
在类中声明的变量,属于类的成员,可以在类的所有方法中访问:
class Person
{
string name; // 成员变量
void SetName(string newName)
{
name = newName; // 可以访问
}
void PrintName()
{
Console.WriteLine(name); // 可以访问
}
}
6. 变量的类型转换
6.1 隐式类型转换
当目标类型的范围大于源类型时,会发生隐式类型转换:
int intValue = 100;
double doubleValue = intValue; // 隐式转换
6.2 显式类型转换
当目标类型的范围小于源类型时,需要使用显式类型转换:
double doubleValue = 100.99;
int intValue = (int)doubleValue; // 显式转换,会丢失小数部分
6.3 使用Convert类进行转换
Convert类提供了更安全的类型转换方法:
string stringValue = "123";
int intValue = Convert.ToInt32(stringValue);
double doubleValue = Convert.ToDouble(stringValue);
7. var关键字
C# 3.0引入了var关键字,用于类型推断:
var name = "张三"; // 推断为string类型
var age = 25; // 推断为int类型
var salary = 5000.50; // 推断为double类型
使用var的注意事项:
- 必须在声明时初始化
- 初始化后类型不能改变
- 提高代码可读性,但不要过度使用
8. 常量与变量的比较
| 特性 | 常量 | 变量 |
|---|---|---|
| 关键字 | const | 无 |
| 值是否可修改 | 不可修改 | 可修改 |
| 初始化时机 | 声明时必须初始化 | 声明时或之后初始化 |
| 命名约定 | 大写字母,下划线分隔 | 驼峰命名法 |
| 内存分配 | 编译时确定 | 运行时分配 |
9. 常见错误与注意事项
- 未初始化的变量不能使用
- 变量名不能与关键字冲突
- 常量值必须在编译时确定
- 类型转换可能导致数据丢失
- 变量作用域过大可能导致命名冲突
10. 示例程序
using System;
class ConstantsVariablesExample
{
// 常量定义
const double PI = 3.14159;
const int MAX_STUDENTS = 50;
const string SCHOOL_NAME = "第一中学";
static void Main()
{
// 变量声明与初始化
string studentName = "李四";
int studentAge = 16;
double studentHeight = 1.75;
bool isMale = true;
// 使用var关键字
var className = "高一(1)班";
var studentCount = 45;
// 变量的使用
Console.WriteLine("学校名称: " + SCHOOL_NAME);
Console.WriteLine("班级: " + className);
Console.WriteLine("学生姓名: " + studentName);
Console.WriteLine("学生年龄: " + studentAge);
Console.WriteLine("学生身高: " + studentHeight);
Console.WriteLine("是否男生: " + isMale);
Console.WriteLine("班级人数: " + studentCount);
Console.WriteLine("最大班级人数: " + MAX_STUDENTS);
// 类型转换示例
int intValue = 100;
double doubleValue = intValue; // 隐式转换
Console.WriteLine("隐式转换: int -> double = " + doubleValue);
doubleValue = 150.75;
intValue = (int)doubleValue; // 显式转换
Console.WriteLine("显式转换: double -> int = " + intValue);
// 使用Convert类
string stringValue = "200";
int convertedValue = Convert.ToInt32(stringValue);
Console.WriteLine("Convert转换: string -> int = " + convertedValue);
}
}
11. 总结
常量和变量是C#编程中的基本概念,掌握它们的声明、初始化和使用方法对于编写高质量的代码至关重要。常量用于存储不变的值,提高代码可读性和可维护性;变量用于存储可变的值,是程序中数据处理的核心。
在实际编程中,应根据数据的性质选择合适的类型,并遵循良好的命名约定和作用域管理,以提高代码的质量和可维护性。