尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

附录A-C#关键字速查表

附录A-C#关键字速查表 附录 AC# 关键字速查表完整的 C# 关键字列表按类别分类包含用途说明和简单示例本附录目录访问修饰符类型声明成员修饰符方法参数修饰符命名空间与引用控制流语句异常处理类型转换与检查字面量与特殊值泛型上下文关键字内存与指针预处理指令查询关键字运算符关键字内置类型别名特殊用途关键字版本特性标记使用建议访问修饰符关键字用途示例public公共访问任何代码都可访问public class MyClass { }private私有访问仅当前类内可访问private int _count;protected受保护访问当前类及派生类可访问protected void Calculate() { }internal内部访问同一程序集内可访问internal class Helper { }protected internal受保护内部访问同一程序集或派生类可访问protected internal string Name;private protected私有受保护访问同一程序集内的派生类可访问C# 7.2private protected int _value;file文件范围访问仅当前文件可访问C# 11file class LocalHelper { }类型声明关键字用途示例class定义类class Person { }struct定义结构体值类型struct Point { public int X, Y; }interface定义接口interface ILogger { void Log(string message); }enum定义枚举enum Status { Active, Inactive }record定义记录类型不可变引用类型C# 9.0record Person(string Name, int Age);record struct定义记录结构体不可变值类型C# 10record struct Point(int X, int Y);delegate定义委托delegate void EventHandler(object sender);成员修饰符关键字用途示例static静态成员属于类型而非实例public static int Count;const常量编译时确定的不可变值const double PI 3.14159;readonly只读字段只能在声明或构造函数中赋值readonly string _name;volatile易失字段防止编译器优化多线程场景volatile bool _isRunning;virtual虚方法可被派生类重写public virtual void Draw() { }abstract抽象成员必须在派生类中实现public abstract void Process();override重写基类的虚方法或抽象方法public override void Draw() { }sealed密封类不可继承或密封方法不可重写public sealed class FinalClass { }new隐藏基类成员public new void Display() { }partial部分类型定义可跨多个文件partial class Customer { }required必需成员必须在对象初始化时设置C# 11public required string Name { get; set; }方法参数修饰符关键字用途示例ref引用传递调用前必须初始化void Increment(ref int value) { value; }out输出参数方法内必须赋值bool TryParse(string s, out int result) { }in只读引用传递避免复制大型结构体C# 7.2void Process(in LargeStruct data) { }params可变参数接受任意数量的参数void Print(params string[] messages) { }命名空间与引用关键字用途示例namespace定义命名空间namespace MyApp.Services { }using引入命名空间或定义别名using System; using Alias System.Text;extern声明外部程序集别名extern alias OldVersion;控制流语句关键字用途示例if条件判断if (x 0) { }elseif 的否定分支if (x 0) { } else { }switch多分支选择switch (x) { case 1: break; }caseswitch 的分支case 1: Console.WriteLine(One); break;defaultswitch 的默认分支default: Console.WriteLine(Other); break;while前置条件循环while (i 10) { i; }do后置条件循环do { i; } while (i 10);for计数循环for (int i 0; i 10; i) { }foreach遍历集合foreach (var item in list) { }break退出循环或 switchwhile (true) { break; }continue跳过本次循环for (int i 0; i 10; i) { if (i 5) continue; }goto无条件跳转不推荐使用goto Label; Label: Console.WriteLine(Here);return返回方法结果并退出方法return 42;异常处理关键字用途示例try定义可能抛出异常的代码块try { RiskyOperation(); }catch捕获异常catch (Exception ex) { }finally无论是否异常都会执行的代码块finally { Cleanup(); }throw抛出异常throw new InvalidOperationException();when异常过滤器C# 6.0catch (HttpException ex) when (ex.StatusCode 404) { }类型转换与检查关键字用途示例as安全类型转换失败返回 nullvar obj value as string;is类型检查返回 boolif (obj is string s) { }typeof获取类型的 Type 对象Type t typeof(int);sizeof获取值类型的字节大小int size sizeof(int); // 4字面量与特殊值关键字用途示例null空引用string s null;true布尔真值bool flag true;false布尔假值bool flag false;default类型的默认值int x default; // 0泛型关键字用途示例where泛型约束class ListT where T : class { }泛型约束类型where T : class- T 必须是引用类型where T : struct- T 必须是值类型where T : new()- T 必须有无参构造函数where T : BaseClass- T 必须继承自 BaseClasswhere T : IInterface- T 必须实现 IInterfacewhere T : U- T 必须是 U 或从 U 派生上下文关键字仅在特定上下文有特殊含义关键字用途示例add定义事件访问器添加订阅event EventHandler Click { add { } remove { } }remove定义事件访问器移除订阅同上get定义属性的获取访问器public int Age { get; set; }set定义属性的设置访问器同上init定义仅初始化访问器C# 9.0public string Name { get; init; }value属性或索引器设置器中的隐式参数set { _value value; }var隐式类型局部变量var list new Listint();dynamic动态类型运行时绑定dynamic obj GetObject();async异步方法修饰符async Taskint GetDataAsync() { }await等待异步操作完成var result await GetDataAsync();yield迭代器返回元素yield return item;global全局命名空间别名global::System.Console.WriteLine();alias引用外部程序集别名extern alias GridV1;fromLINQ 查询表达式的起始from item in listselectLINQ 查询投影select item.NamewhereLINQ 查询过滤条件where item.Age 18orderbyLINQ 查询排序orderby item.NamegroupLINQ 查询分组group item by item.CategoryjoinLINQ 查询连接join order in orders on item.Id equals order.ItemIdintoLINQ 查询延续group item by item.Category into gletLINQ 查询临时变量let total item.Price * item.QuantityascendingLINQ 升序排序orderby item.Name ascendingdescendingLINQ 降序排序orderby item.Name descendingonLINQ join 条件on item.Id equals order.ItemIdequalsLINQ join 相等比较同上byLINQ group 分组键group item by item.Categorynameof获取符号的字符串名称C# 6.0string name nameof(variable);when模式匹配守卫C# 7.0case int n when n 0:and模式匹配逻辑与C# 9.0is 0 and 100or模式匹配逻辑或C# 9.0is red or bluenot模式匹配逻辑非C# 9.0is not nullwith记录类型的非破坏性修改C# 9.0var person2 person1 with { Age 30 };record记录类型声明C# 9.0record Person(string Name, int Age);init仅初始化属性C# 9.0public string Name { get; init; }nint本机大小整数C# 9.0nint ptr 0;nuint无符号本机大小整数C# 9.0nuint size 100;unmanaged泛型约束非托管类型C# 7.3where T : unmanagednotnull泛型约束非空类型C# 8.0where T : notnullmanaged上下文关键字C# 预留-scoped限制引用的生命周期C# 11scoped Spanint span stackalloc int[10];file文件范围类型C# 11file class Helper { }required必需成员C# 11public required string Name { get; set; }内存与指针仅在不安全代码中关键字用途示例unsafe允许不安全代码指针操作unsafe { int* ptr value; }fixed固定对象防止垃圾回收移动fixed (int* ptr array[0]) { }stackalloc在栈上分配内存Spanint span stackalloc int[10];预处理指令以 # 开头编译时处理指令用途示例#if条件编译#if DEBUG#else条件编译否定分支#else#elif条件编译的 else if#elif RELEASE#endif结束条件编译#endif#define定义预处理符号#define DEBUG#undef取消定义预处理符号#undef DEBUG#warning生成编译警告#warning This is deprecated#error生成编译错误#error Not supported#line修改编译器的行号和文件名#line 100 MyFile.cs#region定义可折叠区域#region Properties#endregion结束可折叠区域#endregion#pragma编译器指令#pragma warning disable CS0168#nullable可空引用类型指令C# 8.0#nullable enable查询关键字LINQ 查询语法关键字用途示例from指定数据源和范围变量from item in collectionwhere过滤条件where item.Price 100select投影结果select item.Namegroup分组group item by item.Categoryinto延续查询group item by item.Category into gorderby排序orderby item.Price descendingjoin连接join order in orders on item.Id equals order.ItemIdlet引入范围变量let total item.Price * item.Quantityascending升序orderby item.Name ascendingdescending降序orderby item.Name descendingonjoin 条件on item.Id equals order.ItemIdequalsjoin 相等比较同上bygroup 分组键by item.Categoryin指定集合from item in collection运算符关键字关键字用途示例new创建对象或数组new Person()checked启用溢出检查checked { int x int.MaxValue 1; }unchecked禁用溢出检查unchecked { int x int.MaxValue 1; }内置类型别名关键字对应 .NET 类型字节大小boolSystem.Boolean1byteSystem.Byte1sbyteSystem.SByte1charSystem.Char2decimalSystem.Decimal16doubleSystem.Double8floatSystem.Single4intSystem.Int324uintSystem.UInt324nintSystem.IntPtr平台相关nuintSystem.UIntPtr平台相关longSystem.Int648ulongSystem.UInt648shortSystem.Int162ushortSystem.UInt162objectSystem.Object-stringSystem.String-voidSystem.Void-特殊用途关键字关键字用途示例this引用当前实例this.Name name;base引用基类成员base.ToString();lock线程同步锁lock (obj) { }event声明事件public event EventHandler Click;operator运算符重载public static Point operator (Point a, Point b) { }implicit隐式类型转换public static implicit operator int(MyType x) { }explicit显式类型转换public static explicit operator int(MyType x) { }版本特性标记以下是不同 C# 版本引入的关键字和特性C# 6.0 (2015)nameofwhen异常过滤器C# 7.0 (2017)when模式匹配out变量声明元组支持C# 7.2 (2017)in参数修饰符ref readonlyprivate protected访问修饰符C# 7.3 (2018)unmanaged泛型约束C# 8.0 (2019)notnull泛型约束可空引用类型#nullableswitch表达式using声明C# 9.0 (2020)recordinit访问器with表达式and、or、not模式匹配nint、nuintC# 10 (2021)record structglobal using文件范围命名空间C# 11 (2022)required成员file类型修饰符scoped关键字C# 12 (2023)主构造函数集合表达式使用建议避免使用goto会降低代码可读性几乎所有场景都有更好的替代方案谨慎使用unsafe不安全代码绕过类型安全检查仅在性能关键场景使用优先使用var当类型明显时使用var可以提高代码简洁性使用nameof重构时自动更新字符串避免硬编码启用可空引用类型在项目中启用#nullable enable减少空引用异常快速查找使用 CtrlF 搜索关键字名称即可快速定位到详细说明。
返回列表