C# 作为微软开发的现代面向对象编程语言,在桌面应用、游戏开发、Web 服务等领域有着广泛应用。本文将系统梳理 C# 的基础知识,涵盖数据类型、数据转换、条件语句、循环语句、控制台输入输出,以及变量常量、运算符、字符串操作、数组和跳转语句等内容,通过丰富实例帮助读者全面掌握。
一、数据类型
数据类型决定了变量可存储的数据种类和范围,主要分为值类型和引用类型。
1. 整数类型
用于存储无小数部分的数字,不同类型有不同的占用空间和范围:
类型 | 占用空间 | 范围 | 示例 |
---|---|---|---|
sbyte | 1 字节 | -128 到 127 | sbyte num1 = 100; |
short | 2 字节 | -32768 到 32767 | short num2 = 20000; |
int | 4 字节 | -2147483648 到 2147483647 | int num3 = 100000; (最常用) |
long | 8 字节 | -9223372036854775808 到 9223372036854775807 | long num4 = 10000000000L; (需加 L 后缀) |
byte | 1 字节 | 0 到 255 | byte num5 = 200; |
ushort | 2 字节 | 0 到 65535 | ushort num6 = 50000; |
uint | 4 字节 | 0 到 4294967295 | uint num7 = 3000000000U; (需加 U 后缀) |
ulong | 8 字节 | 0 到 18446744073709551615 | ulong num8 = 15000000000UL; (需加 UL 后缀) |
2. 浮点类型
用于存储带小数部分的数字:
- float:4 字节,精度约 6-7 位小数,赋值时需加
f
或F
后缀
示例:float pi1 = 3.14159f;
- double:8 字节,精度约 15-17 位小数(默认浮点类型)
示例:double pi2 = 3.1415926535;
- decimal:16 字节,高精度(28-29 位小数),适合财务计算,需加
m
或M
后缀
示例:decimal money = 99.99m;
3. 字符与布尔类型
- char:2 字节,用于存储单个字符,需用单引号包裹
示例:char gender = '男';
char letter = 'A';
- bool:1 字节,仅能存储
true
(真)或false
(假)
示例:bool isPass = true;
bool hasError = false;
4. 字符串类型(引用类型)
string用于存储文本,用双引号包裹,是最常用的引用类型:
string name = "张三";
string message = "Hello, C#!";
二、变量与常量
1. 变量的声明与初始化
变量是存储数据的容器,声明时必须指定类型,初始化即第一次赋值:
// 声明后初始化
int score;
score = 90;
// 声明时直接初始化
string username = "Alice";
double height = 1.75;
2. 常量(const)
值在程序运行中不可修改的量,声明时必须初始化:
const double PI = 3.14159; // 数学常量π
const int MAX_AGE = 120; // 假设的最大年龄限制
// 错误示例:常量不能被重新赋值
// PI = 3.14;
三、运算符
C# 提供了多种运算符,用于处理数据和变量:
1. 算术运算符
int a = 10, b = 3;
Console.WriteLine(a + b); // 加:13
Console.WriteLine(a - b); // 减:7
Console.WriteLine(a * b); // 乘:30
Console.WriteLine(a / b); // 除(整数除法取整):3
Console.WriteLine(a % b); // 取余:1
2. 赋值运算符
int x = 5;
x += 3; // 等价于 x = x + 3 → x=8
x -= 2; // 等价于 x = x - 2 → x=6
x *= 4; // 等价于 x = x * 4 → x=24
x /= 6; // 等价于 x = x / 6 → x=4
3. 比较运算符(返回 bool 值)
int m = 5, n = 10;
Console.WriteLine(m == n); // 等于:false
Console.WriteLine(m != n); // 不等于:true
Console.WriteLine(m > n); // 大于:false
Console.WriteLine(m <= n); // 小于等于:true
4. 逻辑运算符(用于连接 bool 表达式)
bool isSunny = true;
bool isWarm = false;
// 与(&&):两边都为true才返回true
Console.WriteLine(isSunny && isWarm); // false
// 或(||):至少一边为true就返回true
Console.WriteLine(isSunny || isWarm); // true
// 非(!):取反
Console.WriteLine(!isSunny); // false
四、数据转换
将一种数据类型转换为另一种类型,分为隐式转换(自动完成,无数据丢失风险)和显式转换(强制转换,可能丢失数据)。
1. 隐式转换
当目标类型的范围大于源类型时,可自动转换:
int a = 100;
long b = a; // int 转 long(范围更大),隐式转换
float c = 3.14f;
double d = c; // float 转 double,隐式转换
2. 显式转换(强制转换)
当目标类型范围小于源类型时,需用(目标类型)
强制转换:
double e = 123.45;
int f = (int)e; // 结果为123(小数部分被截断)
long g = 20000000000;
int h = (int)g; // 若超出int范围,结果会出错(需注意)
3. 常用转换方法
-
Convert 类:提供更安全的转换,支持多种类型
string str = "123"; int num = Convert.ToInt32(str); // 字符串转int double num2 = Convert.ToDouble("45.67"); // 字符串转double
-
Parse 方法:针对字符串转数值类型
int num3 = int.Parse("789"); float num4 = float.Parse("3.14");
五、字符串操作
字符串(string)是常用类型,有许多实用操作:
1. 字符串拼接
string first = "Hello";
string last = "World";
string full1 = first + " " + last; // 用+拼接 → "Hello World"
string full2 = $"{first} {last}"; // 字符串插值(更推荐)→ "Hello World"
2. 常用字符串方法
string text = " C# Programming ";
// 移除首尾空格
string trimmed = text.Trim(); // "C# Programming"
// 转换大小写
string lower = text.ToLower(); // " c# programming "
string upper = text.ToUpper(); // " C# PROGRAMMING "
// 检查是否包含子串
bool hasCSharp = text.Contains("C#"); // true
// 替换内容
string replaced = text.Replace("C#", "C Sharp"); // " C Sharp Programming "
六、条件语句
条件语句用于根据不同条件执行不同的代码块,常用的有if
语句和switch
语句。
1. if 语句
-
基本结构:
if (条件) { 代码块 }
示例:判断一个数是否为正数int num = 5; if (num > 0) { Console.WriteLine("这是正数"); }
-
if-else 结构:满足条件执行 if 块,否则执行 else 块
示例:判断奇偶数int num = 7; if (num % 2 == 0) { Console.WriteLine("偶数"); } else { Console.WriteLine("奇数"); }
-
if-else if-else 结构:多条件判断
示例:判断成绩等级int score = 85; if (score >= 90) { Console.WriteLine("优秀"); } else if (score >= 80) { Console.WriteLine("良好"); } else if (score >= 60) { Console.WriteLine("及格"); } else { Console.WriteLine("不及格"); }
2. switch 语句
用于判断一个变量与多个值的匹配情况,适合条件清晰的场景:
int day = 3;
switch (day)
{
case 1:
Console.WriteLine("星期一");
break; // 跳出switch
case 2:
Console.WriteLine("星期二");
break;
case 3:
Console.WriteLine("星期三");
break;
default: // 所有case不匹配时执行
Console.WriteLine("其他星期");
break;
}
注意:每个
case
后需加break
,否则会继续执行下一个case
。
七、循环语句
循环语句用于重复执行一段代码,常用的有for
、while
和do-while
。
1. for 循环
适合已知循环次数的场景,结构:for (初始值; 循环条件; 增量)
示例 1:输出 1 到 5 的数字
for (int i = 1; i <= 5; i++)
{
Console.WriteLine(i);
}
// 输出:1 2 3 4 5
示例 2:计算 1 到 100 的和
int sum = 0;
for (int i = 1; i <= 100; i++)
{
sum += i; // 等价于 sum = sum + i
}
Console.WriteLine("1到100的和为:" + sum); // 结果为5050
2. while 循环
适合未知循环次数,但已知循环条件的场景,结构:while (循环条件) { 代码块 }
示例:计算 1 到多少的和小于 1000
int sum = 0;
int num = 1;
while (sum + num <= 1000)
{
sum += num;
num++;
}
Console.WriteLine("最大的数是:" + (num - 1)); // 结果为44
3. do-while 循环
与while
类似,但至少执行一次代码块,结构:do { 代码块 } while (循环条件);
示例:让用户输入数字,直到输入 0 为止
int input;
do
{
Console.WriteLine("请输入一个数字(输入0退出):");
input = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("你输入的是:" + input);
} while (input != 0);
八、数组
数组用于存储多个相同类型的数据,长度固定:
1. 数组的声明与初始化
// 声明并指定长度(初始值为默认值,如int默认0)
int[] numbers = new int[5];
numbers[0] = 10; // 给第一个元素赋值
numbers[1] = 20;
// 声明时直接初始化
string[] fruits = { "苹果", "香蕉", "橙子" };
int[] scores = new int[] { 85, 90, 78 };
2. 访问数组元素(通过索引,从 0 开始)
string[] colors = { "红", "绿", "蓝" };
Console.WriteLine(colors[0]); // 输出第一个元素:红
Console.WriteLine(colors.Length); // 输出数组长度:3
3. 遍历数组(结合循环)
int[] nums = { 1, 2, 3, 4, 5 };
// for循环遍历
for (int i = 0; i < nums.Length; i++)
{
Console.WriteLine(nums[i]);
}
// foreach循环遍历(更简洁,适合只读访问)
foreach (int num in nums)
{
Console.WriteLine(num);
}
九、跳转语句
用于改变程序执行流程:
1. break
- 在循环中:跳出当前循环
- 在 switch 中:跳出 switch 语句
// 循环中使用break
for (int i = 1; i <= 10; i++)
{
if (i == 5)
{
break; // 当i=5时跳出循环
}
Console.WriteLine(i); // 输出1-4
}
2. continue
跳过当前循环的剩余部分,直接进入下一次循环:
// 输出1-10中的奇数
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0)
{
continue; // 偶数时跳过后续代码
}
Console.WriteLine(i); // 输出1,3,5,7,9
}
3. return
用于结束当前方法(虽然暂未介绍方法,但可简单理解为 “退出程序”):
Console.WriteLine("开始");
return; // 程序执行到这里会直接结束
Console.WriteLine("结束"); // 这行代码不会执行
十、控制台输入输出
控制台是 C# 程序与用户交互的基础方式,常用以下方法:
1. 输出:Console.WriteLine ()
- 输出内容并自动换行
Console.WriteLine("Hello World!"); // 输出文本 int age = 20; Console.WriteLine("年龄:" + age); // 拼接变量 Console.WriteLine($"年龄:{age}"); // 字符串插值(更简洁)
2. 输入:Console.ReadLine ()
- 读取用户输入的文本,返回值为
string
类型,如需数值需转换Console.WriteLine("请输入姓名:"); string name = Console.ReadLine(); // 读取文本 Console.WriteLine("请输入年龄:"); int age = Convert.ToInt32(Console.ReadLine()); // 读取并转换为整数 Console.WriteLine($"你好,{name},今年{age}岁");
总结
本文全面介绍了 C# 的基础知识,包括数据类型、变量与常量、运算符、数据转换、字符串操作、条件语句、循环语句、数组、跳转语句以及控制台操作。这些内容相互配合,是构建 C# 程序的基础 “积木”。掌握这些知识后,读者可以编写具有一定逻辑复杂度的程序,为后续学习函数、类、对象等面向对象概念打下坚实基础。通过大量练习实例,能更快熟练运用这些基础知识点,提升 C# 编程能力。