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/7/26 5:57:32 阅读更多 →
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/7/26 5:57:32 阅读更多 →
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/7/26 5:57:32 阅读更多 →

最新新闻

YOLO算法在交通标志识别中的优化与实践

YOLO算法在交通标志识别中的优化与实践

1. 项目背景与核心价值交通标志识别是智能驾驶和辅助驾驶系统中的关键技术环节。随着城市道路复杂度提升,准确识别各类交通标志对行车安全的重要性日益凸显。这个项目通过构建标准化的交通标志数据集,并基于YOLO系列算法进行多版本适配验证,为…

2026/7/26 6:17:42 阅读更多 →
基于YOLO的无人机检测系统:高精度低延迟解决方案

基于YOLO的无人机检测系统:高精度低延迟解决方案

1. 项目背景与核心价值无人机在航拍、物流、农业等领域的普及带来了新的监管挑战。传统雷达检测方案在低空小型目标识别上存在明显短板,而基于深度学习的视觉检测技术正成为行业新宠。我们团队基于最新YOLO架构开发的无人机检测系统,在保持1.7ms超低延迟…

2026/7/26 6:17:42 阅读更多 →
Windows Copilot反代技术:免费调用GPT-5的OpenAI兼容API方案

Windows Copilot反代技术:免费调用GPT-5的OpenAI兼容API方案

最近在开发AI应用时,很多同学都遇到了一个共同难题:想要使用最新的GPT模型能力,但OpenAI的API调用费用实在不菲。特别是对于个人开发者和小团队来说,长期使用成本压力很大。不过微软近期将GPT-5整合到了Windows Copilot中&#xf…

2026/7/26 6:17:41 阅读更多 →
PPT复刻操作系统界面:交互逻辑实现与性能优化指南

PPT复刻操作系统界面:交互逻辑实现与性能优化指南

这类用PPT复刻操作系统的项目,最值得先看的不是最终效果有多像,而是能不能在普通电脑上稳定运行、操作逻辑是否连贯、以及复现过程中会遇到哪些实际限制。如果你也想试试用PPT模拟系统界面,我更建议把重点放在交互逻辑的实现和性能优化上&…

2026/7/26 6:17:41 阅读更多 →
AI芯片SRAM编译器选型:高速型与高密度型深度对比与实战决策

AI芯片SRAM编译器选型:高速型与高密度型深度对比与实战决策

1. 项目概述:为什么SRAM编译器选型是AI芯片的“生死线”?在AI芯片设计的江湖里,SRAM(静态随机存取存储器)编译器选型,绝对是一个能让资深工程师眉头紧锁、让项目PM夜不能寐的关键决策。这玩意儿不像选个电阻…

2026/7/26 6:17:41 阅读更多 →
C++高效字符串分割:单循环算法原理与性能优化实践

C++高效字符串分割:单循环算法原理与性能优化实践

1. 项目概述与核心需求在C日常开发中,字符串分割是一个高频到几乎无处不在的操作。无论是解析配置文件、处理CSV数据、拆分URL参数,还是分析日志文件,你总会遇到需要将一个长字符串按照特定分隔符(比如逗号、空格、竖线&#xff0…

2026/7/26 6:16:41 阅读更多 →

日新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/26 0:00:31 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/26 0:00:31 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/26 0:00:31 阅读更多 →

月新闻