C# 知识补充
文章平均质量分 83
深入了解代码底层逻辑
語衣
博客内容仅供个人参考
展开
-
C# 静态static
static关键字是一个非常重要的概念,它用于声明静态成员,这些成员属于类本身而非类的任何特定实例。静态成员在类的所有实例之间共享,这意味着无论创建了多少个类的实例,静态成员都只有一份拷贝。原创 2024-09-16 08:43:00 · 667 阅读 · 0 评论 -
C# List定义和常用方法
列表(List)是一种常用的集合类型,它属于System.Collections.Generic命名空间。列表是一个有序集合,可以包含重复的元素,并且可以根据索引访问元素。原创 2024-09-10 13:06:19 · 1488 阅读 · 0 评论 -
C# Tuple、ValueTuple
Tuple提供了一种快速、简便的方式来创建包含多个元素的数据结构,但其缺点也不容忽视。在C# 7.0及更高版本中,ValueTuple作为Tuple的改进版,提供了更好的性能和更灵活的使用方式,是处理多个返回值或临时数据结构时的更好选择。原创 2024-09-10 12:48:41 · 1517 阅读 · 0 评论 -
C# 关于多线程同步不同实现方式
关于多线程同步不同实现方式原创 2024-09-10 10:59:47 · 1059 阅读 · 0 评论 -
C# 数组定义和常用方法
在C#中,数组是一种用于存储固定大小的相同类型元素的集合。数组中的每个元素可以通过索引来访问,索引是从0开始的。Array.Sort和方法都允许使用自定义比较器来对数组或集合进行排序。// 降序排序。原创 2024-09-09 20:44:39 · 848 阅读 · 0 评论 -
C# 字符串定义及常用方法
一般情况下,我们将“一经赋值,其值就不能被更改”视为不变性,字符串的不变性就是指,字符串一经赋值,其值就不能被更改,当通过代码使字符串变量等于一个新的值的时候,堆上会出现一个新的字符串,然后,栈上的变量指向新的字符串,无法更改原来字符串的值。从指定的起始索引开始,截取指定长度的字符,然后返回这个子字符串。需求:按照JSON文件对比机器命令id返回结果,把机器错误信息转义成中文,即数组里的数字,难点,数组里包含了个小数组,开头结尾不要。空字符串是有效的字符串对象,表示不包含任何字符的字符串,而。原创 2024-09-03 14:26:41 · 1264 阅读 · 0 评论 -
C# ?的使用
C# ?的使用原创 2024-08-05 14:03:24 · 452 阅读 · 0 评论 -
C# 常用的编程设计原则
这些设计原则在实际软件开发中经常被应用,它们可以帮助我们创建出更加健壮、灵活和易于维护的软件系统。然而,需要注意的是,并不是每个原则都需要在每个项目中严格遵循,而是应该根据实际情况和项目的需求来选择合适的原则进行应用。同时,这些原则也不是孤立的,它们之间是相互关联和补充的,应该综合考虑并灵活运用。原创 2024-04-25 14:43:19 · 275 阅读 · 0 评论 -
C# ForgettableKnowledge
但是,它不允许从类的实例或外部类直接访问。即,你不能从类的实例外部(包括类的静态方法或属性)直接访问受保护的成员,但可以在派生类中访问它们。这意味着成员既可以在项目内部被访问,也可以在派生类中被访问,但仅限于那些可以访问该成员的程序集。这种访问级别允许同一程序集中的任何代码访问成员,但不允许其他程序集中的代码访问。访问修饰符确实允许子类访问成员,但不允许实例(即类的非静态成员)直接从类的外部访问这些成员(除非它们是通过派生类访问的)。这是访问级别最严格的修饰符,仅限于其所在的类或结构体内的成员访问。原创 2024-07-16 14:07:50 · 244 阅读 · 0 评论 -
C# 继承、多态、向上、向下转型、接口的联系
接口与继承有着密切的关系,类可以实现一个或多个接口,从而继承接口中定义的方法。接口的使用与多态密切相关,通过接口类型的引用,我们可以实现运行时多态,调用实现该接口的类的具体方法。是多态的补充和扩展。多态的实现依赖于向上转型,通过向上转型,我们可以将派生类对象赋值给基类引用,从而可以使用基类引用来调用子类的方法。通过将派生类对象转换为基类引用,我们可以利用基类引用来统一处理不同类型的对象,实现了代码的灵活性和扩展性。向上转型是安全的,因为派生类对象总是可以赋值给基类引用,并且运行时将自动调用相应子类的实现。原创 2024-04-24 15:20:32 · 378 阅读 · 0 评论 -
解耦小技巧
抽象类和接口都是实现解耦的重要工具。通过抽象,我们可以将公共行为定义在抽象类中,而将具体实现留给子类。通过接口,我们可以定义对象之间的通信契约,从而实现松耦合的设计。:依赖注入是实现控制反转的一种手段。通过依赖注入,容器能够控制对象的创建和依赖的注入,从而实现了控制反转。接口来访问用户数据。类的代码,从而实现了松耦合的设计。这样,我们可以轻松地替换。类不再直接依赖于具体的。的实现类,而无需修改。原创 2024-06-20 11:19:52 · 271 阅读 · 0 评论 -
C# 关于=>、_的使用问题
在C#中,下划线_通常用作丢弃未使用的变量或参数,而不是用来表示方法或Lambda表达式不需要参数。当在方法签名或Lambda表达式中使用_时,它实际上是一个有效的参数名称,表示该参数的值被丢弃。在无参数的情况下,Lambda表达式和表达式主体定义在外观上可能看起来相似,但它们有不同的语义和用途。表达式主体定义:从C# 6.0开始,用于简化只有单个表达式的方法、属性、索引器和事件的定义。尽管在无参数时外观相似,但Lambda表达式用于创建函数对象,而表达式主体定义用于定义方法。这取决于使用的上下文。原创 2024-04-24 14:33:44 · 469 阅读 · 0 评论 -
C# 关于base、using、yield关键字的使用
当你开始枚举这个对象时,迭代器块的代码会开始执行,直到遇到第一个yield return语句,此时它会返回该值,并暂停执行。当使用实现了 IDisposable 接口的对象时(如文件句柄、数据库连接、网络套接字等),为了确保这些对象在使用完毕后能够释放其占用的非托管资源,应该使用 using 语句。在这个例子中,DerivedClass 重写了 DoSomething 方法,但在新的实现中,它首先使用 base.DoSomething() 来调用基类版本的 DoSomething 方法。原创 2024-04-25 11:12:00 · 1095 阅读 · 1 评论 -
C# async和await做了什么
asyncawaitasyncTaskawaitasyncawaitawait使用async和await可以简化异步编程的复杂性,使代码更易于阅读和维护。它们允许开发人员以同步的方式编写异步代码,而无需处理回调、事件或状态检查等复杂的异步模式。原创 2024-04-30 16:58:35 · 1158 阅读 · 0 评论 -
C# Task取消暂停
相反,它会变为“已取消请求”状态,这意味着已经请求取消该任务,但任务可能仍在执行中。只有当任务中的代码显式检查并响应取消请求时,任务才会停止执行并最终变为“已取消”状态。它将继续执行直到遇到检查取消请求的代码,并根据该代码的逻辑来决定是否停止。它本身不执行任何取消操作,而是作为取消请求的标记。这个异常通常被视为正常的取消流程的一部分,而不是一个需要捕获和处理的错误。它是触发取消操作的关键点,并且提供了触发取消操作的方法(如。的状态并通知调用者任务已取消,但它不会自动执行任何清理工作。创建的任务的生命周期。原创 2024-06-20 15:07:34 · 1664 阅读 · 0 评论