![](https://img-blog.csdnimg.cn/20210114101959812.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C#
文章平均质量分 81
对C#语法的回顾巩固学习
丿灬鑫崽丶
一介草民
展开
-
C#:序列化
序列化是指将对象转换成字节流,从而存储对象或将对象传输到内存、数据库或文件的过程。 它的主要用途是保存对象的状态,以便能够在需要时重新创建对象。 反向过程称为“反序列化”。下图展示了序列化的整个过程:将对象序列化为带有数据的流。 该流还可能包含有关对象类型的信息,例如其版本、区域性和程序集名称。 可以将此流中的对象存储在数据库、文件或内存中。通过序列化,开发人员可以保存对象的状态,并能在需要时重新创建对象,同时还能存储对象和交换数据。 通过序列化,开发人员可以执行如下操作:若要对二进制或 XML 进行序列化原创 2022-06-16 11:35:02 · 642 阅读 · 0 评论 -
C#:LINQ
语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。随着时间的推移,人们已经为各种数据源开发了不同的语言。因此,开发人员需要针对每种类型的数据源了解不同的查询语言:SQL 数据库、XML 文档、各种 Web 服务等。 LINQ 通过提供处理各种数据源和数据格式的数据的一致模型,简化了这一情况。 借助 LINQ,查询成为了最高级的语言构造,就像类、方法和事件一样。 可以使用语言关键字和熟悉的运算符针对强类型化对象集合编写查询。 LINQ 系列技术提供了针对对象 (LINQ to O原创 2022-06-16 11:14:21 · 213 阅读 · 0 评论 -
C#:集合
对于许多应用程序,我们都会想要创建和管理相关对象的组。 有两种方法对对象进行分组:许多通用集合由 .NET 提供。 每种类型的集合用于特定的用途。可以使用 System.Collections.Generic 命名空间中的某个类来创建泛型集合。 当集合中的所有项都具有相同的数据类型时,泛型集合会非常有用。 泛型集合通过仅允许添加所需的数据类型,强制实施强类型化。下表列出了 System.Collections.Generic 命名空间中的一些常用类:在 .NET Framework 4 以及更新的版本中,S原创 2022-06-15 15:28:57 · 608 阅读 · 0 评论 -
C#:特性
使用特性,可以有效地将元数据或声明性信息与代码(程序集、类型、方法、属性等)相关联。 将特性与程序实体相关联后,可以在运行时使用反射这项技术查询特性。 有关详细信息,请参阅反射 (C#)。特性具有以下属性:特性的常见用途:可以将特性附加到几乎任何声明中,尽管特定特性可能会限制可有效附加到的声明的类型。 在 C# 中,通过用方括号 ([]) 将特性名称括起来,并置于应用该特性的实体的声明上方以指定特性。在此示例中,SerializableAttribute 特性用于将具体特征应用于类:按照约定,所有特性原创 2022-06-15 15:05:24 · 366 阅读 · 0 评论 -
C#:异步编程
异步操作表示执行某项操作之后不等待操作结束,但可以在操作结束后收到通知。示例:示例是一个调用阻塞操作的例子。tcp连接的方法就是一个阻塞操作,只有连接成功或是失败的时候才会回复。发送数据也是同样的。线程阻塞的时候操作系统会调度这些执行操作的线程进入等待状态,等到操作完成后再重新把线程放入待运行队列中并调度执行。这种方式会出现一个问题,如果我们要同时管理多个tcp连接,那么我们就需要创建很多的线程,每个线程分配的栈空间加起来就会消耗很多的内存。在linux平台下,一个线程栈会默认分配8~10M的空间,也原创 2022-06-15 13:32:03 · 2020 阅读 · 0 评论 -
C#:多线程与异步
多线程介绍:多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多余一个线程,进而提升整体处理性能。--来自百度百科分类:原生线程: 托管线程:.........原创 2021-08-20 14:20:06 · 3426 阅读 · 0 评论 -
C#:模式匹配与模式
“模式匹配”是一种测试表达式是否具有特定特征的方法。 C# 模式匹配提供更简洁的语法,用于测试表达式并在表达式匹配时采取措施。模式匹配最常见的方案之一是确保值不是 。 使用以下示例进行 测试时,可以测试可为 null 的值类型并将其转换为其基础类型:上述代码时声明模式,用于测试变量类型并将其分配给新变量。变量 仅在 子句的 true 部分可供访问和分配。 如果尝试在 子句或 程序块后等其他位置访问,编译器将出错。 其次,由于不使用 运算符,因此当类型重载 运算符时,此模式有效。 这使该方原创 2022-08-15 16:51:21 · 732 阅读 · 0 评论 -
C#:事件
和 委托 类似,事件是后期绑定机制。 实际上,事件是建立在对 委托 的语言支持之上的。事件是对象用于(向系统中的所有相关组件)广播已发生事情的一种方式。 任何其他组件都可以订阅事件,并在事件引发时得到通知。许多图形系统都具有用于报告用户交互的事件模型。 这些事件会报告鼠标移动、按钮点击和类似的交互。 这是使用事件的最常见情景之一,但并非唯一的情景。要使用事件首先就得定义委托,如下:然后再定义使用 关键字的事件:对事件所依赖的事务赋值:调用事件:通过使用 运算符增加订阅事件:原创 2022-06-09 16:46:18 · 544 阅读 · 0 评论 -
C#:委托
C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针。委托(Delegate) 是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。委托(Delegate)特别用于实现事件和回调方法。所有的委托(Delegate)都派生自 System.Delegate 类。在 .NET 中委托提供后期绑定机制。 后期绑定意味着调用方在你所创建的算法中至少提供一个方法来实现算法的一部分。比如,我们要实现一个多语言的问候。当我们没有使用委托的时候可以这样实现。示例:虽然这样解决了问题,但是原创 2022-06-08 16:01:49 · 174 阅读 · 0 评论 -
C#:顶级语句
从 C# 9 开始,无需在控制台应用程序项目中显式包含 方法。 相反,可以使用顶级语句功能最大程度地减少必须编写的代码。 在这种情况下,编译器将为应用程序生成类和 方法入口点。下面是一个 Program.cs 文件看,它是 C# 10 中的一个完整 C# 程序:注意点:参考:Microsoft C# 顶级语句...原创 2022-06-07 10:39:13 · 2342 阅读 · 0 评论 -
C#:元组
元组提供一种从方法调用中检索多个值的轻量级方法。假设我们有一个方法具有多个返回值,在没有元组之前,我们可以使用out和对象。例如:下面是一个使用out的示例:这样,按元素逐个操作比较麻烦,而当我们使用元组时,则可以这样实现:注:在 C# 7.0 及更高版本中,才可以从元组中检索多个元素。1. 在括号内显式声明每个字段的类型。示例:2.使用 关键字,以便 C# 推断每个变量的类型。示例:3.将元组析构到已声明的变量中。示例:4.从 C# 10 开始,可在析构中混合使用变量声明和原创 2022-06-07 13:48:30 · 267 阅读 · 0 评论 -
C#:记录
C# 中的记录是一个类或结构,它为使用数据模型提供特定的语法和行为。在下列情况下,请考虑使用记录而不是类或结构:声明和实例化类或结构时使用的语法与操作记录时的相同。只是将 关键字替换为 ,或者使用 而不是 。 同样地,记录类支持相同的表示继承关系的语法。记录与类的区别如下所示:记录结构与结构的不同之处是,编译器合成了方法来确定相等性和 。 编译器为位置记录结构合成 方法。下面的示例定义了一个公共记录,它使用位置参数来声明和实例化记录。 然后,它会输出类型名称和属性值:下面的示例演示了记录中的值相原创 2022-06-07 11:43:37 · 566 阅读 · 0 评论 -
C#:弃元
从 C# 7.0 开始,C# 支持弃元,这是一种在应用程序代码中人为取消使用的占位符变量。简单来说,弃元的作用就是告诉编译器和其他读取代码的文件你打算忽略表达式的结果。当我们不需要或不使用赋值的结果时,就可以使用弃元。我们在代码中一定遇到过这种苦恼:此时,我们并不需要使用到返回的值,但是方法又规定必须传递out的值,此时,我们就可以这样实现代码:除了out之外,我们还可以在元组和对象析构、等语句中使用弃元写出优雅代码例如,下面的例子我们只希望使用到日期中的年份。例如,我们在的模式匹配中不期原创 2022-06-07 10:20:41 · 808 阅读 · 0 评论 -
C#:异常
C# 语言的异常处理功能有助于处理在程序运行期间发生的任何意外或异常情况。异常处理功能使用 、 和 关键字来尝试执行可能失败的操作、在你确定合理的情况下处理故障,以及在事后清除资源。公共语言运行时 (CLR)、.NET/第三方库或应用程序代码都可生成异常。 异常是使用 关键字创建而成。在许多情况下,异常并不是由代码直接调用的方法抛出,而是由调用堆栈中再往下的另一方法抛出。 如果发生这种异常,CLR 会展开堆栈,同时针对特定异常类型查找包含 代码块的方法,并执行它找到的首个此类 代码块。 如果在调用堆原创 2022-06-07 14:01:52 · 409 阅读 · 0 评论 -
C#:正则表达式
RegexOptions成员 成员 说明 Cultureinvariant 指定忽略字符串的区域值 ExplicitCapture 修改收集匹配的方式,方法是确保把显式指定的匹配作为有效的搜索结果 IgnoreCase 忽略输入字符串的大小写 IgnorePatternWhitespace 在字符串中删除未转义的空白,启用通过#符号指定的注释 M......原创 2019-07-23 13:14:38 · 192 阅读 · 0 评论