VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > c#编程 >
  • 第2章:C#基本语法与数据类型

2.1 变量与常量:程序的“数据容器”
在程序世界中,数据是核心,而变量与常量则是存储数据的“容器”。想象你在厨房做饭:变量就像可重复使用的保鲜盒,你可以随时放入、取出或更换里面的食材;常量则像密封的罐头,一旦装入内容(如固定配方的调料比例),就无法再修改。本节将详细讲解变量与常量的定义、使用场景及核心语法,并通过实例带你掌握“数据容器”的操作逻辑。
2.1.1 变量:可修改的“动态容器”
概念与作用
变量(Variable) 是程序中用于临时存储数据的内存空间,其值可以在程序运行过程中被修改。例如,游戏中的角色生命值、用户输入的用户名、购物车中的商品数量等,都需要用变量存储。
语法规则
声明变量的基本语法:
csharp
数据类型 变量名; // 声明变量(分配内存空间)
变量名 = 值; // 赋值(向内存空间存入数据)
// 或合并为:数据类型 变量名 = 值; (声明并初始化)
实例2-1:变量的声明、赋值与使用
需求:定义不同类型的变量(整数、字符串、布尔值),赋值后打印输出,观察变量的“动态存储”特性。
csharp

	using System; // 引入System命名空间,包含Console类 
	
	class VariableDemo // 定义类(C#程序的基本单元) 
	{ 
	static void Main() // 程序入口方法(Main方法) 
	{ 
	// 1. 声明并初始化int类型变量(整数) 
	int age = 20; // 数据类型int(32位整数),变量名age,赋值20 
	
	// 2. 声明string类型变量(字符串),先声明后赋值 
	string name; // 声明string类型变量name(存储文本) 
	name = "Alice"; // 赋值为字符串"Alice"(字符串用双引号包裹) 
	
	// 3. 声明bool类型变量(布尔值),存储true/false 
	bool isStudent = true; // bool类型只有两个值:true(真)或false(假) 
	
	// 4. 打印变量值(使用Console.WriteLine输出到控制台) 
	Console.WriteLine($"姓名:{name},年龄:{age},是否为学生:{isStudent}"); 
	
	// 5. 修改变量的值(体现“变量”的可变性) 
	age = 21; // 将age从20修改为21 
	Console.WriteLine($"一年后年龄:{age}"); // 输出更新后的值 
	} 
	}

逐行代码讲解:
using System;:引入System命名空间,该命名空间包含Console类(用于控制台输入输出),如果不引入,需写成System.Console.WriteLine。
class VariableDemo:定义一个类(C#中所有代码必须放在类中),类名VariableDemo遵循Pascal命名法(首字母大写)。
static void Main():程序的入口方法,C#程序从Main方法开始执行,static表示静态方法,void表示无返回值。
int age = 20;:
oint:数据类型,表示32位有符号整数(范围-2147483648~2147483647),适合存储年龄、数量等整数。
oage:变量名,遵循驼峰命名法(首字母小写,后续单词首字母大写),见名知意(存储“年龄”)。
o=:赋值运算符,将右侧的20存入左侧变量age对应的内存空间。
string name; name = "Alice";:先声明string类型变量name(字符串类型用于存储文本),再通过赋值语句存入"Alice"。字符串必须用双引号""包裹。
bool isStudent = true;:bool(布尔)类型变量isStudent,赋值true(表示“是学生”),如果是“非学生”则赋值false。
Console.WriteLine($"姓名:{name},年龄:{age},是否为学生:{isStudent}");:
o使用字符串插值($符号开头,{变量名}嵌入变量值),将变量值直接插入字符串中,比传统的Console.WriteLine("姓名:{0}...", name, age)更简洁。
age = 21;:修改age的值,体现变量的“可变性”——内存中的数据可以被覆盖更新。
2.1.2 常量:不可修改的“静态容器”
概念与作用
常量(Constant) 是程序中值固定不变的量,声明时必须初始化,且后续无法修改。适合存储程序中固定的、重复使用的值(如数学常数、固定配置)。
语法规则
声明常量的基本语法:
csharp
const 数据类型 常量名 = 值; // 必须初始化,且值不可修改
实例2-2:用常量定义圆周率π,计算圆面积
需求:定义常量存储圆周率π(3.14159),输入圆的半径,计算并输出圆的面积(面积公式:π×半径²)。
csharp

	using System; 
	
	class ConstantDemo 
	{ 
	static void Main() 
	{ 
	// 声明常量π(值固定,不可修改) 
	const double Pi = 3.14159; // const关键字标记常量,double类型(双精度小数) 
	
	// 提示用户输入半径(变量存储动态输入的值) 
	Console.Write("请输入圆的半径:"); // Write不换行,WriteLine换行 
	string radiusInput = Console.ReadLine(); // 读取用户输入的字符串 
	double radius = double.Parse(radiusInput); // 将字符串转换为double类型(小数) 
	
	// 计算面积(使用常量Pi) 
	double area = Pi * radius * radius; // 面积 = π × 半径 × 半径 
	
	// 输出结果(保留2位小数) 
	Console.WriteLine($"圆的面积为:{area:F2}"); // {area:F2}表示保留2位小数 
	} 
	}

逐行代码讲解:
const double Pi = 3.14159;:
oconst:常量关键字,标记Pi的值在编译时确定且不可修改。
odouble:数据类型,表示双精度浮点数(64位),适合存储带小数的值(如π、半径、面积)。
oPi:常量名,遵循Pascal命名法(首字母大写),通常常量名全大写(如PI),此处用Pi更易读。
o3.14159:常量的初始值,必须是编译时可确定的值(如直接写数字、字符串字面量,不能用变量或表达式)。
Console.Write("请输入圆的半径:");:Write方法在控制台输出文本但不换行,等待用户输入。
string radiusInput = Console.ReadLine();:ReadLine()读取用户输入的一行文本,存储到radiusInput变量(字符串类型)。
double radius = double.Parse(radiusInput);:double.Parse将字符串转换为double类型(如用户输入“5”,转换为5.0),如果输入非数字(如“abc”),会抛出异常(后续章节会讲解异常处理)。
double area = Pi * radius * radius;:使用常量Pi计算面积,由于Pi不可修改,确保每次计算使用的π值一致,避免因误改导致结果错误。
Console.WriteLine($"圆的面积为:{area:F2}");:{area:F2}是格式说明符,表示将area四舍五入保留2位小数(如计算结果为78.53975,输出78.54)。
2.1.3 知识点扩展与延伸
一、变量的核心扩展

  1. 变量命名规则(必须遵守!)
    只能包含字母、数字、下划线(_),且不能以数字开头(如age2合法,2age不合法)。
    不能使用C#关键字(如int、class、if等,关键字是语言保留的特殊单词)。
    区分大小写(age和Age是两个不同的变量)。
    建议:
    o局部变量/参数:用驼峰命名法(首字母小写,如studentName、itemCount)。
    o类/方法/常量:用Pascal命名法(首字母大写,如Person、CalculateArea、Pi)。
  2. 变量的作用域(“可见范围”)
    变量只能在声明它的代码块({}内)中使用,称为“作用域”:
    csharp
	if (true) 
	{ 
	int x = 10; // 局部变量,作用域仅限于if代码块内 
	Console.WriteLine(x); // 合法:在作用域内 
	} 
	Console.WriteLine(x); // 错误:x超出作用域,编译器无法识别
  1. 未初始化的变量是否有默认值?
    局部变量(方法内声明的变量):必须显式初始化才能使用,否则编译报错(C#强制要求,避免使用未定义的值)。
    csharp
	int a; 
	Console.WriteLine(a); // 错误:使用了未赋值的局部变量“a

成员变量(类中声明的变量):未初始化时会自动赋予默认值(值类型为0/0.0/false,引用类型为null):
csharp

	class MyClass 
	{ 
	int num; // 成员变量,默认值0 
	string str; // 成员变量,默认值null(空引用) 
	}

二、常量的核心扩展

  1. const的限制:只能存储“编译时常量”
    const常量的值必须在编译时确定,不能用变量或运行时计算的表达式初始化:
    csharp
	int a = 5; 
	const int b = a; // 错误:a是变量,值在运行时确定,不能初始化const常量 
	const int c = 10 + 20; // 合法:10+20是编译时可计算的表达式(结果30)
  1. readonly与const的区别(“运行时常量”)
    如果需要一个“运行时才能确定值”且后续不可修改的量,用readonly(只读变量),而非const:
    csharp
	class Circle 
	{ 
	const double PiConst = 3.14; // 编译时常量,值固定 
	readonly double PiReadonly; // 运行时常量,可在构造函数中初始化 
	
	public Circle(double pi) 
	{ 
	PiReadonly = pi; // 在构造函数中赋值(运行时确定) 
	} 
	}

const:编译时替换(代码中所有PiConst会被直接替换为3.14),性能略高,但值完全固定。
readonly:运行时赋值(可从配置文件、数据库读取值),灵活性更高,但只能在声明时或构造函数中修改。
总结
变量:存储动态数据,值可修改,声明时可先不初始化(局部变量需使用前初始化),适合存储程序运行中变化的数据(如用户输入、计算结果)。
常量:存储固定数据,值不可修改,声明时必须初始化,适合存储程序中不变的值(如数学常数、固定配置)。
核心语法:变量用数据类型 变量名;声明,常量用const 数据类型 常量名 = 值;声明。
本站原创,转载请注明出处:https://www.xin3721.com/ArticlecSharp/c49330.html


相关教程