1. 基础语法结构
C# 程序由命名空间、类和方法组成。每个程序必须有一个 Main
方法作为入口点。using
指令用于导入命名空间,Console.WriteLine()
是常用的输出方法。
csharp
复制
下载
using System; // 引入核心命名空间
class Program // 类定义
{
static void Main() // 程序入口方法
{
Console.WriteLine("Hello C#!"); // 控制台输出
}
}
2. 数据类型
C# 是强类型语言,所有变量必须声明类型:
类型 | 示例 | 说明 |
---|---|---|
int |
int age = 25; |
32位整数,范围: -2³¹ 到 2³¹-1 |
double |
double pi = 3.14; |
64位双精度浮点数 |
bool |
bool isActive = true; |
布尔值(true/false) |
char |
char symbol = '#'; |
单个Unicode字符 |
string |
string name = "Alice"; |
Unicode字符串 |
decimal |
decimal price = 19.99m; |
128位精确十进制数,适合金融计算 |
3. 变量与常量
-
变量:存储可变值,使用前必须声明类型
-
常量 :使用
const
声明,值不可变 -
类型推断 :
var
关键字让编译器推断类型
csharp
复制
下载
int counter = 10; // 显式类型声明
const double TAX_RATE = 0.2; // 常量
var message = "Hello"; // 编译器推断为string类型
4. 运算符
C# 包含多种运算符类型:
-
算术运算符 :
+
,-
,*
,/
,%
-
比较运算符 :
==
,!=
,>
,<
,>=
,<=
-
逻辑运算符 :
&&
(AND),||
(OR),!
(NOT) -
赋值运算符 :
=
,+=
,-=
,*=
csharp
复制
下载
int x = 15, y = 4;
double quotient = x / (double)y; // 3.75 (需类型转换)
bool isEven = (x % 2 == 0); // 检查偶数
5. 控制流程
控制程序执行流程的结构:
条件语句
csharp
复制
下载
int temperature = 22;
if (temperature > 30)
Console.WriteLine("炎热");
else if (temperature > 20)
Console.WriteLine("舒适"); // 输出此项
else
Console.WriteLine("凉爽");
循环语句
csharp
复制
下载
// for 循环:精确控制迭代次数
for (int i = 1; i <= 5; i++) {
Console.Write(i + " "); // 输出: 1 2 3 4 5
}
// while 循环:条件满足时执行
int count = 3;
while (count > 0) {
Console.Write(count-- + " "); // 输出: 3 2 1
}
6. 数组
存储相同类型元素的集合:
-
一维数组:线性数据集合
-
多维数组:表格结构数据
-
索引从0开始
csharp
复制
下载
// 一维数组
string[] colors = { "红", "绿", "蓝" };
Console.WriteLine(colors[0]); // 输出"红"
// 二维数组
int[,] grid = { {1, 2}, {3, 4}, {5, 6} };
Console.WriteLine(grid[2, 0]); // 输出5
7. 方法(函数)
封装可重用代码块:
-
可接收参数
-
可返回结果
-
提高代码复用性
csharp
复制
下载
// 方法定义
static double CalculateCircleArea(double radius)
{
return Math.PI * radius * radius;
}
// 方法调用
double area = CalculateCircleArea(5.0);
Console.WriteLine($"圆面积: {area:F2}"); // 输出: 圆面积: 78.54
8. 类与对象
面向对象编程的核心:
-
类:对象的蓝图模板
-
对象:类的具体实例
-
属性:描述对象特征
-
方法:对象的行为
csharp
复制
下载
class Book
{
// 属性
public string Title { get; set; }
public string Author { get; set; }
// 方法
public void DisplayInfo()
{
Console.WriteLine($"《{Title}》, 作者: {Author}");
}
}
// 创建对象
Book myBook = new Book();
myBook.Title = "C#入门经典";
myBook.Author = "John Doe";
myBook.DisplayInfo(); // 输出书籍信息
9. 继承与多态
OOP 的核心特性:
-
继承:子类继承父类特性
-
多态:不同对象对同一消息有不同响应
-
方法重写 :使用
virtual
和override
csharp
复制
下载
class Vehicle // 基类
{
public virtual void StartEngine()
{
Console.WriteLine("引擎启动");
}
}
class Car : Vehicle // 继承
{
public override void StartEngine() // 方法重写
{
Console.WriteLine("汽车引擎启动");
}
}
// 多态示例
Vehicle myVehicle = new Car();
myVehicle.StartEngine(); // 输出"汽车引擎启动"
10. 异常处理
处理运行时错误的机制:
-
try
:包含可能出错的代码 -
catch
:捕获并处理异常 -
finally
:无论是否异常都会执行
csharp
复制
下载
try
{
int[] nums = { 1, 2, 3 };
Console.WriteLine(nums[5]); // 索引超出范围
}
catch (IndexOutOfRangeException ex) // 捕获特定异常
{
Console.WriteLine($"错误: {ex.Message}");
}
catch (Exception ex) // 通用异常捕获
{
Console.WriteLine($"未知错误: {ex.Message}");
}
finally
{
Console.WriteLine("清理资源完成");
}
11. 字符串操作
字符串是引用类型,常用操作:
-
拼接:
+
或$"{}"
-
格式化:
ToUpper()
,ToLower()
-
查询:
Contains()
,IndexOf()
-
截取:
Substring()
csharp
复制
下载
string greeting = " Hello C# ";
Console.WriteLine(greeting.Trim()); // 移除空格: "Hello C#"
Console.WriteLine(greeting.ToUpper()); // 转大写: " HELLO C# "
Console.WriteLine(greeting.Contains("C#")); // 检查包含: True
Console.WriteLine($"长度: {greeting.Length}"); // 字符串插值
12. 集合类型
System.Collections.Generic
命名空间提供:
-
List<T>:动态数组
-
Dictionary<TKey,TValue>:键值对集合
-
Queue<T>:先进先出队列
-
Stack<T>:后进先出堆栈
csharp
复制
下载
using System.Collections.Generic;
// List示例
List<int> numbers = new List<int> { 10, 20, 30 };
numbers.Add(40);
Console.WriteLine($"第二个元素: {numbers[1]}"); // 20
// Dictionary示例
Dictionary<string, int> ages = new Dictionary<string, int>();
ages.Add("Alice", 28);
ages["Bob"] = 32; // 另一种添加方式
Console.WriteLine($"Alice的年龄: {ages["Alice"]}");
完整案例:学生成绩管理系统
csharp
复制
下载
using System;
using System.Collections.Generic;
class Student
{
public string Name { get; set; }
public List<int> Grades { get; } = new List<int>();
public void AddGrade(int grade)
{
if (grade < 0 || grade > 100)
throw new ArgumentException("成绩必须在0-100之间");
Grades.Add(grade);
}
public double CalculateAverage()
{
if (Grades.Count == 0) return 0;
double sum = 0;
foreach (int grade in Grades)
sum += grade;
return sum / Grades.Count;
}
}
class Program
{
static void Main()
{
try
{
Student student = new Student { Name = "张三" };
student.AddGrade(85);
student.AddGrade(92);
student.AddGrade(78);
Console.WriteLine($"{student.Name}的平均成绩: {student.CalculateAverage():F1}");
}
catch (Exception ex)
{
Console.WriteLine($"错误: {ex.Message}");
}
}
}
程序说明:
-
创建
Student
类管理学生信息和成绩 -
使用
List<int>
存储多个成绩 -
实现成绩添加和平均分计算方法
-
添加异常处理确保成绩有效性
-
主程序创建学生对象并计算平均分
输出:
text
复制
下载
张三的平均成绩: 85.0
关键概念总结
概念 | 说明 |
---|---|
面向对象 | 封装、继承、多态三大特性,使用类(class)和对象(object)构建程序 |
类型系统 | 值类型(int, struct)直接存储值,引用类型(class, string)存储内存地址 |
内存管理 | 自动垃圾回收(GC),using 语句管理资源释放 |
核心特性 | 属性(Properties)、索引器、委托(Delegates)、事件(Events) |
高级功能 | LINQ(语言集成查询)、异步编程(async/await)、反射(Reflection) |
开发框架 | .NET Framework/.NET Core,支持控制台、Web(ASP.NET)、桌面(WinForms/WPF)等应用 |
学习路线建议:
掌握基础语法和OOP概念
学习常用.NET类库(集合、文件IO、网络)
实践数据库操作(ADO.NET/Entity Framework)
探索高级主题(异步编程、LINQ、依赖注入)
构建实际项目(Web API、桌面应用)