C# 编程语言
C# 问答C# 快速指南C# 速查表更新于 2025/6/8 22:52:17C# 速查表 提供所有基本概念的快速参考。C# 在后端编程中非常流行并且广泛应用于 Web 应用程序、桌面应用程序、面向对象编程 (OOP) 以及与 .NET 的跨平台开发提供了丰富的就业机会。学习这份速查表可以帮助你有效地准备面试和考试。阅读这份速查表学习C# 编程语言。目录1. 基本结构概述C# 的基本结构代表了编程语言的基础。该文件包含程序开始执行的主要方法。以下是 C# 的基本结构:using System; class Program { static void Main() { Console.WriteLine(Hello, World!); } }2. 注释类型注释是程序中会被编译器忽略的一部分。在 C# 中有三种声明注释的方式 -3.理解数据类型数据类型定义了存储数据的类型。它们可以分为两大类:I. 值类型值类型存储实际数据。以下是表示变量的类型列表:II.引用类型引用类型存储元素的内存地址。引用类型列表如下:4.使用变量在编程中变量可以通过保存值来存储内存位置。存储在变量中的值可以改变程序的执行。因此变量允许用户存储、修改和检索数据。int num 5; // 整数 string word Hello; // 字符串5. 使用常量在 C# 中常量是不可变的值在编译时已知在程序执行期间不会更改。const int ConstNum 21; // 常量的值始终保持不变。请注意C# 中的常量遵循 PascalCase 命名规范这意味着它以大写字母开头。6. 探索条件语句C# 中的条件语句用于控制程序的流程。它根据特定条件执行不同的代码块。// 检查第一个条件 if (condition) { /*...*/} // 如果前一个条件不成立则检查其他条件 else if (condition) { /*...*/} // 如果上述条件均不成立则执行 else 代码块 else { /*...*/} // Switch 语句用于比较单个变量与多个值 switch (variable) { case val_1: // val_1 的代码 break; default: // 如果没有匹配的案例则执行默认块 break; }7. 循环和迭代循环在特定条件下执行重复任务其中迭代器用于指示给定元素列表中元素的位置。for (int i 0; i 5; i) { /*...*/} foreach (var item in collection) { /*...*/} while (condition) { /*...*/} do { /*...*/} while (condition);8.使用数组一个数组由连续内存块中固定数量的相同类型的元素引用。// 包含 5 个元素的数组 int[] n new int[5]; // 赋值数组值 n[0] 11; n[1] 12; n[2] 13;9. 列表简介列表 是一个动态集合用于存储可变数量的相同类型元素。// 列表包 using System.Collections.Generic; class Program { static void Main() { // 来自包的列表 List num new List(); // 将元素 10 添加到列表中 num.Add(10) // 删除索引 3 处的元素 num.Remove(3) // 检查元素是否存在 num.contain(6) } }10.理解字典字典是以键值对形式存储的数据集合其中每个键都是唯一的。// 创建一个包含字符串键和整数值的字典 Dictionary ages new Dictionary(); // 将键值对添加到字典中 ages[Vivek] 25; ages[Salman] 20; ages[Arjun] 25;11. 定义方法方法是执行特定任务的代码块。这是封装的逻辑用于代码复用。public static int SubNum(int n1, int n2) { // 返回减法 return n1 - n2; }12. 类和对象概述类是指对象的结构包含属性和方法。对象是类的一个实例;可以使用 new 关键字创建。类的定义class ClassName { // 字段(属性) public dataType fieldName; // 构造函数 public ClassName(parameters) { // 初始化 } // 方法 public returnType MethodName() { // 方法代码 } }创建对象ClassName objectName new ClassName(parameters);13. 处理异常异常处理允许用户处理运行时错误而不是程序崩溃。C# 异常处理基于四个关键字:try、catch、finally 和 throw。try { // 代码可能引发异常 int result 40 / 0; // 除以零 } catch (DivideByZeroException ex) { // 此代码块用于处理异常 Console.WriteLine(Error: ex.Message); } finally { // 此代码块将始终执行 Console.WriteLine(此代码块将始终运行。); }14. 委托、事件和 Lambda 表达式委托、事件 和 Lambda 表达式 在 C# 中是事件驱动应用程序的一部分可以简化代码维护。using System; // 委托定义 public delegate void MyDelegate(); // 事件声明 event MyDelegate MyEvent; // 带有 Func 函数的 Lambda 表达式用于两个整数相加 Func add (a, b) a b; class Program { static void Main(string[] args) { // 订阅事件 MyEvent () Console.WriteLine(Event triggered!); // 触发事件 MyEvent?.Invoke(); // 使用 lambda 表达式 (Func) 将两个数字相加 int result add(5, 3); Console.WriteLine($The result of adding 5 and 3 is: {result}); } }15. LINQ(语言集成查询)简介LINQ 是 C# 中的一项功能允许用户从多个来源生成查询和数据操作。其语法类似于 SQL。using System.Linq; class Program { static void Main() { var data new[] // LINQ query var query from item in data where /* condition */ select element; } }16. 使用属性属性在程序中提供了一些附加信息。这些信息可以在运行时使用。以下是可在 C# 程序中使用的属性列表 -// 定义属性 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] public class MyCustomAttribute : Attribute { ... } // 应用属性 [MyCustomAttribute(This is a custom attribute)] public class MyClass { [MyCustomAttribute(This is a method attribute)] public void MyMethod() { } } // 预定义属性 [Obsolete(Use NewMethod instead)] public void OldMethod() { }17. 使用 Async 和 AwaitC# 中的 async 和 await 关键字可以轻松编写在后台运行的代码从而在执行任务时保持程序的响应。这种方法会暂停任务直至其完成(例如等待文件加载)然后平稳地继续执行。// 用于读取文件的异步方法 public static async Task ReadFileAsync(string filePath) { // 调用异步方法 return await reader.ReadToEndAsync(); }18. 字符串操作和操控字符串操控是指修改文本数据以实现所需结果的过程。C# 通过字符串类拥有丰富的内置方法。一些常见的字符串操作如下:-19. 文件输入/输出操作这是管理磁盘中文件的基本通信过程。输入和输出指的是读取和写入文件。// 从文件中读取文本 file.ReadAllText(file_eg.txt); // 将文本写入文件 file.WriteAllText(file_eg.txt, This is Tutorialspoint!); // 将文本添加到文件 file.AppendAllText(file_eg.txt, Append the text); // 检查文件是否存在 file.Exists()20. 使用日期和时间日期和时间在开发支持业务决策和流程的应用程序中发挥着重要作用。这里我们简要介绍一下日期和时间代码的用法。// 获取当前日期和时间 // 本地时间 DateTime currentDateTime DateTime.Now; // UTC 时间 DateTime utcDateTime DateTime.UtcNow; // 使用类获取日期和时间 DateTime now DateTime.Now; DateTime today DateTime.Today;21. 理解泛型泛型 的定义带有类型参数该参数允许用户创建一个带有数据类型占位符的类。public class Box { public T Value { get; set; } public Box(T value) { Value value; } }22. 可空类型及其用法可空类型是值类型中直接声明值的部分。要声明可空类型请在值类型后使用?符号。以下是示例:−// 可空整数 int? myNullableInt null; // 可空双精度数 double? myNullableDouble 3.14; // 可空布尔值 bool? myNullableBool null;23. 属性和反射属性讨论程序元素的元数据而反射允许用户在运行时检查并与元数据交互以操作查询或类型例如类型、方法和其他元素。// 应用于类的自定义属性。 [CustomAttribute] public class MyEmp { // do something } // 使用反射获取属性: Attribute[] attrs Attribute.GetCustomAttributes(typeof(MyEmp));24. 创建扩展方法创建扩展方法时无需更改源代码即可向现有类型(例如类、结构体或接口)添加新方法。此方法定义在静态类下必须声明static和this关键字来标识其第一个参数所使用的类型。此处我们以字符串反转为例进行说明。public static class StringExtensions { // 扩展方法 public static string ReverseString(this string str) { char[] charArray str.ToCharArray(); Array.Reverse(charArray); return new string(charArray); } }25. 实现依赖注入依赖注入是遵循面向对象编程 (OOPS) 技术的软件开发应用程序的一种设计模式。在此模式中类从外部源接收其依赖项而不是在内部创建它们。在此示例中Client 依赖于 IService即通过其构造函数注入。public interface IService { void Execute(); } public class Service : IService { public void Execute() Console.WriteLine(Service Executed); } public class Client { private readonly IService _service; public Client(IService service) { _service service; } public void Run() _service.Execute(); } var service new Service(); var client new Client(service); client.Run();26. 使用部分类在 C# 中部分类 允许用户将类定义、结构体或接口拆分到多个文件中。当用户需要处理更大的类或文件时此功能非常有用。第一个文件 - student_one.cspublic partial class Stu { public string Name { get; set; } }第二个文件 - student_two.cspublic partial class Stu { public int Age { get; set; } public void DisplayInfo() { Console.WriteLine($Name: {Name}, Age: {Age}); } }要点 −27. 互操作性特性C# 的互操作性特性允许用户在同一系统中设置多种编程语言。28. C# 中的匿名类型创建匿名类型时使用关键字new指定对象初始化器的属性和值。var student new { Name Tapas, Age 25 }; Console.WriteLine(person.Name); // 结果 - Tapas Console.WriteLine(person.Age); // 结果 - 2529. 使用元组元组是一种数据结构允许用户在单个对象中存储不同类型的多个值。var tuple (5, Tutorialspoint, 32.9);注意:C# 元组在 C# 7.0 及更高版本中引入。30. C# 中的模式匹配模式匹配允许用户根据特定的类型、值或结构检查对象。以下是 C# 中使用的模式列表:// 类型模式 object n1 42; if (obj is int n1) { Console.WriteLine($Integer: {n1}); } // 属性模式 var person new { Name Mary, Age 30 }; if (person is { Name: Mary, Age: 25 }) { Console.WriteLine(This is Mary and she is older than 25.); } // 常量模式 int n 25; switch (n) { case 0: Console.WriteLine(One); break; case 10: Console.WriteLine(Eight); break; default: Console.WriteLine(Other); break; } // 关系模式 int age 20; if (age is 18 and 65) { Console.WriteLine(You are an adult.); } // 逻辑模式(与、或、与非) int value 15; if (value is 10 and 20) { Console.WriteLine(The value is ranges between 10 and 20.); }31. 使用本地函数本地函数是在方法内部定义的函数仅在其作用域内使用。static void Main() { // 局部函数定义 int sub(int a, int b) { return a - b; } // 调用本地函数 int result sub(10, 5); }32. 记录简介记录 是 C# 9.0 中引入的不可变数据模型。其主要用途是存储和比较数据而不是修改数据。public record record_name(string Name, int Age, ...);33. 使用 with 表达式在 C# 中with表达式用于通过复制现有对象并修改特定属性来创建新对象。var New_object Existing_object with { property_name new_value };34. 索引器和范围概述索引器类似于数组可以按顺序收集元素。int[] numbers { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; // 访问索引 2 到 4 之间的元素(例如范围) var range numbers[2..5]; // 获取索引 0 到 3 之间的元素 var range2 numbers[..4];35. 理解 using 声明C# 中的using声明指的是文件或流等资源。此声明确保资源在程序使用完毕后已关闭并可供重用。// 文件在作用域结束时自动关闭。 using var file new FileStream(file_example.txt, FileMode.Open);36.可空引用类型 (NRT)有两种方法可以识别 NRT -// 非可空引用类型 string name null; // 编译器错误因为不允许为空 // 可空引用类型 string? name null;37. 基于模式的Using特性C# 中的using 语句确保正确处理实现 IDisposable 接口的对象无论是同步还是异步。我们可以将这些特性与文件处理过程联系起来。using (FileStream fileStream new FileStream(path)) { // do something }38. 默认接口实现默认接口功能允许用户在不破坏现有实现的情况下向接口添加新方法。如下所示:public interface IExample { // 默认接口的实现 void SayHello() { Console.WriteLine(Hello from the default interface implementation!); } }39. C# 中的动态绑定在 C# 中动态绑定 是指在运行时(而非编译时)解析方法调用、属性或操作的过程。此功能通过 dynamic 实现。简单来说我们可以说在运行时进行类型检查。dynamic ob Hello // 此操作在运行时解析 Console.WriteLine(ob.Length); // 由于整数不具备 Length 属性因此在运行时抛出错误 ob 23C# 问答C# 快速指南

相关新闻

鸟枪换炮后的威力

鸟枪换炮后的威力

新光源注入器调试在即,本来计划用两台工控机跑起所有的后台服务,把楚涵搞得疲惫不堪反复折腾快一年的服务器终于到了,这个经历去年买注入器的三台示波器的时候就领教过,简单的买东西一件事,竟然因为各种纠缠在学校资产…

2026/10/18 16:51:05 阅读更多 →
10分钟解决Windows DLL缺失问题:VisualCppRedist AIO完整实践指南

10分钟解决Windows DLL缺失问题:VisualCppRedist AIO完整实践指南

10分钟解决Windows DLL缺失问题:VisualCppRedist AIO完整实践指南 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾遇到过"无法启动此程…

2026/10/18 16:51:10 阅读更多 →
Linux动态壁纸终极指南:免费在Linux上运行Wallpaper Engine壁纸

Linux动态壁纸终极指南:免费在Linux上运行Wallpaper Engine壁纸

Linux动态壁纸终极指南:免费在Linux上运行Wallpaper Engine壁纸 【免费下载链接】linux-wallpaperengine Wallpaper Engine backgrounds for Linux! 项目地址: https://gitcode.com/gh_mirrors/li/linux-wallpaperengine 厌倦了单调的静态桌面背景&#xff1…

2026/10/16 1:09:12 阅读更多 →

最新新闻

基于YOLO的口罩佩戴检测系统毕设实战指南

基于YOLO的口罩佩戴检测系统毕设实战指南

毕设选题这件事,每年都有一批人卡在同一个地方:想做个“有技术含量、工作量足、还能拿得出手”的题目,又担心难度太大自己搞不定。如果你刚好是计算机视觉方向,我强烈建议你看一眼“深度学习口罩佩戴检测系统”这类题目。它不只是…

2026/10/18 16:50:46 阅读更多 →
Eclipse中创建Maven工程:从环境配置到项目运行的完整指南

Eclipse中创建Maven工程:从环境配置到项目运行的完整指南

1. 为什么在IDE里手动搭Maven工程比命令行更值得花时间很多人第一次接触Maven,习惯直接在终端敲mvn archetype:generate,一路回车把骨架拉起来,然后才用IDE打开。这个流程本身没毛病,但如果你后续要长期维护这个工程,我…

2026/10/18 16:50:45 阅读更多 →
自动驾驶入门硬件选型与实车调试实战指南

自动驾驶入门硬件选型与实车调试实战指南

1. 这不是教科书,而是一份“能上手、不踩坑、真能跑通”的自动驾驶入门实录“自动驾驶入门指南”这六个字,最近在技术社区、高校实验室甚至职业培训平台高频出现。但你点开十篇所谓“入门指南”,八篇在讲L0-L5分级、三篇贴出ROS安装命令、两篇…

2026/10/18 16:50:45 阅读更多 →
CMake静态库与动态库生成链接实战指南

CMake静态库与动态库生成链接实战指南

1. 从一个真实困境说起:为什么你的CMake项目总是链接失败如果你写过C,大概率经历过这样的场景:代码明明编译通过了,一到链接阶段就报一堆undefined reference to ...,或者运行时提示error while loading shared librar…

2026/10/18 16:50:45 阅读更多 →
Claude Code 知识工作插件与 slash commands 实战指南

Claude Code 知识工作插件与 slash commands 实战指南

1. 从零认识 knowledge-work-plugins:它到底解决什么问题第一次看到knowledge-work-plugins这个仓库名,很多人会以为是某个知识管理软件的插件合集,或者像 Obsidian、Logseq 那种笔记工具的扩展包。实际上它的定位要更“底层”一些——这是一…

2026/10/18 16:50:45 阅读更多 →
零基础也能创建AI智能体:三步搭建个人助手实战指南

零基础也能创建AI智能体:三步搭建个人助手实战指南

身边很多朋友一听到“AI智能体”这个词,第一反应都是:这玩意儿是不是得先学三个月Python,再搞懂什么API调用、微调模型,才配碰一碰?其实真不是。我刚开始接触的时候也抱着同样的刻板印象,直到我自己用纯聊天…

2026/10/18 16:49:44 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →