微信登录

C#教程

基础档案信息
发行年月2000-06
开源年月2014-11
功能数50
开发者Microsoft
开发语言C++和C#
官网地址https://dotnet.microsoft.com/
版本C# 12
版权Microsoft
许可证详情MIT License for .NET Core
是否付费
开源免费
运行环境与硬件
支持系统
Windows
Linux
macOS
架构
x86
x64
ARM
GUI 软件名Visual Studio
文件扩展名
.cs
.csproj
.sln
.dll
.exe
.config
.xml
.json
.resx
.settings
底层执行原理
内存管理方式
自动GC
编译方式JIT编译
运行方式虚拟机(CLR)
输入速度5 MB/S
输出速度10 MB/S
常用标准库
System
Collections
Linq
IO
Net
Threading
Reflection
Text
Xml
Data
软件特点
面向对象
类型安全
自动GC
跨平台
丰富标准库
异步支持
LINQ集成
事件驱动
委托Lambda
属性访问
索引器
运算符重载
异常处理
泛型
反射
安装部署与路径
安装大小.NET SDK 安装包大小约为 200MB,安装后占用空间约 1GB。
运行速度C# 程序运行速度快,得益于 .NET 运行时优化和即时编译。
Windows安装路径C:\Program Files\dotnet
Windows配置文件路径C:\Users\%USERNAME%\AppData\Roaming\Microsoft\CSharp
Windows数据目录C:\ProgramData\Microsoft\CSharp
Windows临时目录C:\Users\%USERNAME%\AppData\Local\Temp\CSharp
Windows日志目录C:\ProgramData\Microsoft\CSharp\Logs
Windows插件目录C:\Program Files\dotnet\plugins
Windows缓存目录C:\Users\%USERNAME%\AppData\Local\Microsoft\CSharp\Cache
Windows文档目录C:\Program Files\dotnet\documentation
Windows示例目录C:\Program Files\dotnet\samples
Windows工具链路径C:\Program Files\dotnet\sdk\[版本]\
WindowsSDK路径C:\Program Files\dotnet\sdk
Windows运行时路径C:\Program Files\dotnet\shared\Microsoft.NETCore.App
Mac安装路径/usr/local/share/dotnet
Mac配置文件路径~/.config/microsoft/csharp
Mac数据目录~/.local/share/microsoft/csharp
Mac临时目录/tmp/csharp
Mac日志目录~/.local/log/microsoft/csharp
Mac插件目录/usr/local/share/dotnet/plugins
Mac缓存目录~/.cache/microsoft/csharp
Mac文档目录/usr/local/share/dotnet/documentation
Mac示例目录/usr/local/share/dotnet/samples
Mac工具链路径/usr/local/share/dotnet/sdk/[版本]/
MacSDK路径/usr/local/share/dotnet/sdk
Mac运行时路径/usr/local/share/dotnet/shared/Microsoft.NETCore.App
Linux安装路径/usr/share/dotnet
Linux配置文件路径~/.config/microsoft/csharp
Linux数据目录~/.local/share/microsoft/csharp
Linux临时目录/tmp/csharp
Linux日志目录~/.local/log/microsoft/csharp
Linux插件目录/usr/share/dotnet/plugins
Linux缓存目录~/.cache/microsoft/csharp
Linux文档目录/usr/share/dotnet/documentation
Linux示例目录/usr/share/dotnet/samples
Linux工具链路径/usr/share/dotnet/sdk/[版本]/
LinuxSDK路径/usr/share/dotnet/sdk
Linux运行时路径/usr/share/dotnet/shared/Microsoft.NETCore.App
语言核心语法能力
语法特性
属性
委托
事件
索引器
LINQ查询
异步/等待
泛型
扩展方法
匿名类型
lambda表达式
类型系统
静态强类型
面向对象支持
完全支持
模块系统使用命名空间和程序集进行模块化,支持动态加载和反射。
异常处理支持try-catch-finally异常处理机制,包括自定义异常类。
函数式支持支持lambda表达式、高阶函数、LINQ查询等函数式编程特性。
并发模型基于任务并行库(TPL)和async/await的异步编程模型,支持多线程和并行处理。
元编程能力通过反射、特性(Attributes)和部分类支持元编程,代码生成有限。
功能列表
面向对象编程
泛型
委托和事件
属性
索引器
LINQ
异步编程
反射
特性
部分类
扩展方法
匿名类型
lambda表达式
命名空间
程序集
关键字
class
object
inheritance
polymorphism
encapsulation
interface
delegate
event
lambda
async
常用语句
int x = 10;
string name = "John";
if (x > 5) { Console.WriteLine("Greater"); }
for (int i = 0; i < 10; i++) { Console.WriteLine(i); }
foreach (var item in list) { Console.WriteLine(item); }
public class MyClass { }
public void MyMethod() { }
using System;
try { /* code */ } catch (Exception ex) { Console.WriteLine(ex.Message); }
async Task<int> GetDataAsync() { return await Task.FromResult(42); }
var numbers = new List<int> {1, 2, 3};
var query = from n in numbers where n > 1 select n;
delegate void MyDelegate(string msg);
event EventHandler MyEvent;
public int MyProperty { get; set; }
public int this[int index] { get { return array[index]; } }
static void Main(string[] args) { }
using static System.Console;
namespace MyNamespace { }
[Serializable] public class SerializableClass { }
必会要点
必会要点
C#是一种面向对象的编程语言。
.NET框架是C#运行的基础平台。
变量声明使用关键字如int, string。
控制结构包括if, else, switch。
循环有for, while, do-while。
方法是使用public, private等修饰符。
类定义使用class关键字。
继承通过:符号实现。
接口使用interface关键字定义。
异常处理使用try-catch-finally。
数组是固定大小的集合。
列表List<T>是动态数组。
字典Dictionary<TKey, TValue>存储键值对。
委托delegate用于引用方法。
事件event基于委托。
LINQ提供数据查询功能。
异步编程使用async和await。
属性property封装字段。
索引器indexer允许对象像数组一样访问。
结构体struct是值类型。
枚举enum定义命名常量。
命名空间namespace组织代码。
使用using指令导入命名空间。
泛型generic提高代码重用性。
反射reflection允许运行时类型检查。
特性attribute添加元数据。
线程thread用于并发执行。
任务Task简化异步操作。
文件IO使用System.IO命名空间。
序列化将对象转换为字节流。
反序列化将字节流恢复为对象。
数据库连接使用ADO.NET。
Entity Framework是ORM框架。
ASP.NET用于Web开发。
Windows Forms用于桌面应用。
WPF提供现代UI框架。
XAML用于定义UI布局。
单元测试使用NUnit或xUnit。
依赖注入提高代码可测试性。
C#最新版本支持新特性如记录类型。
工程工具链生态
包管理工具NuGet
调试工具Visual Studio Debugger
测试框架NUnit, xUnit, MSTest
代码格式化工具Roslyn Code Formatter
静态分析工具Roslyn Analyzers, StyleCop
文档生成工具Sandcastle, DocFX
构建工具MSBuild, dotnet CLI
社区活跃度活跃,拥有大量的GitHub仓库和活跃的Stack Overflow讨论
与其他语言对比C#与Java类似,但具有更好的语言特性和.NET生态;与Python相比,C#性能更好但学习曲线较陡。
学习资料与开发工具
推荐学习资源
Microsoft官方C#文档
C#教程 - W3Schools
C# Station教程
Learn C# - Codecademy
C#编程入门指南
官方教程https://docs.microsoft.com/en-us/dotnet/csharp/
视频教程
C#完整课程 for Beginners - freeCodeCamp
C# Tutorial Full Course - Derek Banas
C# Programming Tutorial for Beginners
Advanced C# Concepts - YouTube系列
Unity with C#游戏开发教程
书籍推荐
C# in Depth - Jon Skeet: 深入讲解C#高级特性和最佳实践。
Head First C# - Andrew Stellman: 图文并茂的入门书籍,适合初学者。
CLR via C# - Jeffrey Richter: 详细解释.NET CLR和C#底层机制。
Pro C# 10 with .NET 6 - Andrew Troelsen: 全面覆盖最新C#版本和.NET。
在线课程
C# Programming for Unity Game Development - Coursera
Complete C# Masterclass - Udemy
C# Basics for Beginners - Pluralsight
Advanced C# Topics - edX
社区论坛
Stack Overflow C#标签: 程序员问答社区,解决各种C#编码问题。
Reddit r/csharp: C#开发者讨论、分享资源和经验。
Microsoft Q&A for C#: 官方支持论坛,获取技术帮助。
CodeProject C#论坛: 教程和项目分享社区。
问题跟踪https://github.com/dotnet/runtime/issues
代码示例仓库https://github.com/microsoft/dotnet-samples
常用IDE插件
C# Extensions for VS Code
ReSharper for Visual Studio
NuGet Package Manager
Roslynator for code analysis
Visual Studio IntelliCode
常用VS Code扩展
C# for Visual Studio Code
NuGet Package Manager
GitLens for version control
Debugger for Unity
C# XML Documentation Comments
常用JetBrains插件
ReSharper for IntelliJ IDEA
dotTrace for profiling
Rider for .NET development
Unity plugin for JetBrains IDEs
Database tools for SQL
代码片段库
C# Code Snippets for VS Code
常用算法实现 in C#
ASP.NET Core代码片段
Entity Framework示例代码
异步编程模式片段
进阶实践与生态
设计模式应用
创建型-单例模式(Singleton)
创建型-工厂方法模式(Factory Method)
创建型-抽象工厂模式(Abstract Factory)
创建型-建造者模式(Builder)
创建型-原型模式(Prototype)
结构型-适配器模式(Adapter)
结构型-桥接模式(Bridge)
结构型-组合模式(Composite)
结构型-装饰器模式(Decorator)
结构型-外观模式(Facade)
结构型-享元模式(Flyweight)
结构型-代理模式(Proxy)
行为型-责任链模式(Chain of Responsibility)
行为型-命令模式(Command)
行为型-解释器模式(Interpreter)
行为型-迭代器模式(Iterator)
行为型-中介者模式(Mediator)
行为型-备忘录模式(Memento)
行为型-观察者模式(Observer)
行为型-状态模式(State)
行为型-策略模式(Strategy)
行为型-模板方法模式(Template Method)
行为型-访问者模式(Visitor)
最佳实践
遵循SOLID原则设计类结构,提高代码可维护性。
使用PascalCase命名类和公共成员,camelCase命名局部变量。
避免使用全局变量,采用依赖注入管理依赖。
编写单元测试(如xUnit)确保代码质量和可靠性。
使用异常处理替代返回错误代码,提升错误管理。
遵循编码规范,如使用大括号和缩进保持一致。
利用接口和抽象类实现多态,增强扩展性。
减少代码重复,通过重构提取公共方法。
性能优化技巧
使用StringBuilder进行字符串拼接,避免不可变字符串开销。
避免在循环中创建对象,重用实例以减少GC压力。
采用异步编程(async/await)提高应用响应性和吞吐量。
缓存频繁访问的数据,如使用MemoryCache减少计算。
优化数据库查询,使用索引和避免N+1查询问题。
使用值类型(struct)替代引用类型以减少堆分配。
启用编译优化,如使用Release配置和AOT编译。
监控内存使用,定期清理不再需要的资源。
著名系统
ASP.NET Core:微软跨平台Web框架,用于构建高性能Web应用。
Unity:游戏引擎,使用C#进行2D/3D游戏开发和模拟。
Xamarin:移动应用框架,用C#开发iOS和Android原生应用。
Blazor:Web框架,允许C#和.NET构建交互式客户端Web UI。
Entity Framework:ORM工具,简化数据库操作和对象映射。
Mono:开源.NET实现,支持跨平台应用和游戏开发。
Azure:云平台,提供C#集成的服务和计算资源。
Windows Forms:桌面应用框架,用于构建Windows GUI程序。
WPF:Windows演示基础,用于富客户端应用程序开发。
ML.NET:机器学习框架,让C#开发者轻松集成AI功能。
SignalR:实时Web功能库,支持服务器到客户端推送。
NuGet:包管理器,用于分享和获取.NET库和工具。
Roslyn:.NET编译器平台,提供代码分析和扩展能力。
Dapper:微型ORM,专注于高性能数据库查询。
NUnit:单元测试框架,广泛用于C#项目测试。
Serilog:结构化日志库,支持多种输出和过滤。
AutoMapper:对象映射库,简化类型转换代码。
Hangfire:后台作业处理库,用于任务调度和执行。
IdentityServer:身份认证和授权解决方案,用于安全API。
MassTransit:消息总线库,支持分布式系统通信。
安全注意事项
防止SQL注入:使用参数化查询或ORM,避免拼接SQL字符串。
验证用户输入:对表单和数据进行检查,防止跨站脚本攻击。
使用HTTPS:加密数据传输,保护敏感信息如密码和令牌。
管理敏感信息:避免硬编码密钥,使用安全存储如Azure Key Vault。
定期更新依赖:修复已知漏洞,使用工具如NuGet漏洞扫描。
实施身份认证和授权:如使用ASP.NET Core Identity确保访问控制。
日志安全事件:记录可疑活动,便于审计和响应。
避免信息泄露:自定义错误页面,不暴露堆栈跟踪给用户。
版本更新日志
C# 9.0(2020):引入记录类型、模式匹配增强和init-only属性。
C# 8.0(2019):添加可空引用类型、异步流和默认接口方法。
C# 7.0(2017):引入元组、解构、本地函数和模式匹配。
.NET 5(2020):统一.NET平台,取代.NET Core和Framework。
.NET Core 3.1(2019):长期支持版本,支持Windows Forms和WPF。
.NET Framework 4.8(2019):传统Windows应用的最终主要版本。
C# 10(2021):添加全局using、文件范围命名空间和记录结构。
.NET 6(2021):引入MAUI、热重载和改进性能。
C# 11(2022):增强原始字符串和模式匹配,简化代码。
.NET 7(2022):聚焦性能、云原生和容器化支持。
未来路线图C#的未来路线图包括增强语言功能(如更强大的模式匹配和元编程),改进性能(如AOT编译和GC优化),扩展生态(如更好的云原生和AI集成),以及提升开发体验(如热重载和工具链更新)。官方计划持续推动跨平台支持和社区贡献。
贡献指南贡献C#和.NET生态可通过GitHub提交问题、拉取请求(修复bug或添加功能),编写文档和教程,参与社区讨论(如Stack Overflow或Reddit),以及创建示例项目。鼓励遵循贡献指南和代码规范。
相关会议
Microsoft Build:年度开发者大会,宣布新技术和工具更新。
.NET Conf:专注于.NET技术的全球会议,涵盖最新发展和案例。
NDC Conferences:全球软件开发会议,常有C#和.NET专题。
DevIntersection:微软技术会议,深入探讨Azure和.NET集成。
Local User Groups:各地C#用户组定期聚会,分享经验和网络。
Visual Studio Live:培训会议,聚焦Visual Studio和.NET开发。
Ignite:微软年度大会,涵盖企业级技术和云服务。
CodeMash:跨技术会议,包括C#最佳实践和前沿话题。
TechBash:美国东海岸开发者会议,强调.NET和云技术。
DotNetos Conference:波兰.NET会议,聚焦高性能和现代开发。

C#(C Sharp)是微软于2000年推出的现代编程语言,作为.NET平台的核心开发语言,兼具高效性、安全性和易用性。它继承了C/C++的强大性能,同时吸收了Java的面向对象特性,语法简洁清晰,支持跨平台开发(通过.NET Core框架),可运行于Windows、Linux和macOS系统。

作为强类型语言,C#提供丰富的特性:自动垃圾回收管理内存,LINQ实现数据查询一体化,异步编程模型(async/await)简化并发任务处理,委托与事件机制增强灵活性。近年来,C#版本迭代频繁(如C# 10/11),持续引入记录类型(Record)、模式匹配、顶级语句等现代化语法,显著提升开发效率。

C#应用场景广泛:通过WPF/WinForms开发桌面应用;作为Unity游戏引擎的主力语言驱动3D游戏开发;借助ASP.NET Core构建高性能Web服务;结合Xamarin创建跨平台移动应用。其生态系统依托Visual Studio、NuGet包管理工具和庞大的开发者社区,为企业级应用、云计算和物联网领域提供强力支持,兼顾开发效率与执行性能,是微软技术栈的核心构成。