![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#学习笔记
文章平均质量分 95
宋瑞梁
本人写的专栏营养价值不高,仅仅是为了记录个人学习过程顺便帮助理解消化,难免出现错误,评论区指正我有空会修改
展开
-
【Unity学习笔记】反射
在我平时做项目的时候,由于我们做的项目都是很简单的,所以不怎么接触反射机制。最早了解反射机制是关于Invoke的时候,知道可以通过方法名来直接进行Invoke调用,但是由于反射调用存在性能开销较大的问题,因此就没打算深入了解、不过反射作为C#的高级特性,可以不用,但是不能不了解反射(Reflection) 的含义和用法。原创 2024-06-06 15:13:04 · 842 阅读 · 0 评论 -
【C#学习笔记】属性和字段
最近在工作的过程中常常会觉得自己在程序设计方面的能力还是有欠缺。例如一直对于变量的声明感到不足,在工作中为了图方便总是直接public定义字段,实际上造成了很多困扰,特写此文总结一下应当怎样定义成员变量。原创 2024-06-05 16:29:47 · 1072 阅读 · 0 评论 -
【C#学习笔记】事件
事件(event)有能力使一个类或者对象在发生相关事情的时候去通知其他类,对象们。简单来说一个事件在发生后会去通知所有的监听事件的成员函数,让它们进行对应的事件处理。乍一看事件和多播委托很像,实际上事件也是委托的一种特殊的封装。所以我们也可以定义一个泛型委托,例如不止顾客点单,服务员自己也可以给自己点咖啡,在不继承同一个基类的情况下就可以用泛型委托来接受不同类型对象的事件响应。原创 2023-11-08 15:41:14 · 280 阅读 · 0 评论 -
【C#学习笔记】数据类中常用委托及接口——以List<T>为例
List为什么是神?在谈论这个问题之前,我想先说说其他数据表结构相较于List究竟差在了哪里……首先是HashTable本身呢就被完爆,HashTable既不是线程安全的,也不是类型安全的,虽然提供了Synchronized()方法可以获取线程安全的类型,以为自己是个哈希表就可以为所欲为了,但这种挑战神的行为导致最终降下了神罚,最后几乎被HasSet所取代。HashSet的Contains方法复杂度是O(1),List的Contains方法复杂度是O(n)。HashSet。原创 2023-08-23 17:18:12 · 1846 阅读 · 0 评论 -
【C#学习笔记】匿名函数和lambda表达式
匿名函数声明需要配合委托使用,并且声明时需要在函数头加上delegate,匿名函数的无参构造可以省略括号。匿名函数定义不允许使用泛型(很好理解,泛型是为了函数调用时能够灵活地接受不同类型的参数,但是使用匿名函数意味着它只会被调用一次,与其使用泛型不如让我们直接指定)定义带参数的匿名函数只需像正常函数定义即可。如果需要返回值只需使用Funcreturn q;lambda表达式就是匿名函数的一种创建方式,使用lambda表达式可以省略匿名函数的delegate。原创 2023-08-22 15:30:38 · 2121 阅读 · 1 评论 -
【C#学习笔记】委托和事件
在 .NET 中委托提供后期绑定机制。 后期绑定意味着调用方在你所创建的算法中至少提供一个方法来实现算法的一部分。说的更简单一点,我们可以通过调用委托实现一大串方法的处理。委托像是一个装函数的容器,在我之前的文章里,将其比作了服务员点菜时写的小单子,当触发委托的时候,就是将单子交给后厨,厨师就会按顺序做出我们点的菜。原创 2023-08-21 18:25:26 · 375 阅读 · 0 评论 -
【C#学习笔记】C#特性的继承,封装,多态
照理继承封装多态应该是学习笔记中最先学习的。但是本系列不是面向新手的,基础的继承封装多态的概念应当是要被掌握的。而本文需要讲述C#中的一些继承封装多态的特性。部分摘自。原创 2023-08-19 15:00:17 · 469 阅读 · 0 评论 -
【C#学习笔记】数组和索引器
使用索引器,用于访问类中的元素(一般是数组元素,通常通过index访问,但是也可以用于其他需要使用序号的情况,例如使用序号来访问int型中的第n个数字,当然也能访问枚举类型。并且接口中定义了get和set权限,则在继承类中必须实现索引器的get和set。在下例中,使用索引值来访问索引,下面设置的索引器是只读的,实现了通过索引值来访问索引号的方法。并不是定义的多维数组,而是交错数组,也就是数组中的数组。交错数组被称为数组中的数组,其内部往往定义了多个数组。继承了该接口,并在接口中定义了索引器的读写访问器。原创 2023-08-05 18:05:34 · 1196 阅读 · 0 评论 -
【C#学习笔记】类型转换
或关键字分别用于定义隐式转换或显式转换。定义转换的类型必须是该转换的源类型或目标类型。可用两种类型中的任何一种类型来定义两种用户定义类型之间的转换。digit } ";使用自定义类型可以定义隐式转换和显示转换,但是要注意类型匹配。原创 2023-08-05 15:53:28 · 761 阅读 · 0 评论 -
【C#学习笔记】内存管理
自动内存管理自动内存管理是CLR在托管执行过程中提供的服务之一。公共语言运行时的垃圾回收器为应用程序管理内存的分配和释放。对开发人员而言,这就意味着在开发托管应用程序时不必编写执行内存管理任务的代码。自动内存管理可解决常见问题,例如,忘记释放对象并导致内存泄漏,或尝试访问已释放对象的内存。原创 2023-08-04 17:21:57 · 1803 阅读 · 0 评论 -
【C#学习笔记】装箱和拆箱
当我们执行装箱操作的时候,一方面将值类型的装箱类型记录在了堆上,同时将堆上的object的值赋值为了123,并且在栈上同时创建了一个引用o用于引用堆上的object。如果一个变量被装箱引用后还需要被拆箱引用,倒不如直接赋值一个新的变量,因为对值类型进行装箱时,必须创建一个全新的对象, 这可能比简单的引用赋值用时最多长 20 倍。原创 2023-08-04 12:24:57 · 682 阅读 · 0 评论 -
【C#学习笔记】引用类型(2)
假设有一个字符串长度为16的stringBuilder,如果我们需要Append成一个length =20的字符串,那么首先StringBuilder会把字符串丢入这个长度为16的缓冲区,当长度超过缓冲区的长度时,则意味着需要更大的缓冲区,则StringBuilder会找一个缓冲区大小翻一倍的新缓冲区(现在是32了)。使用Object.GetType()来返回对象的类型x.GetType()和typeof()的区别是,GetType()是object的方法,可以用于所有变量后,以获取它们的类型。原创 2023-08-03 17:48:55 · 462 阅读 · 0 评论 -
【C#学习笔记】引用类型(1)
从性能方面引用类型就更好,并且从内存方面考虑,引用类型存放在CLR的虚拟机堆中,而值类型存放在栈中,在堆中可以对数据直接处理,而在栈中则需要将其前面的内存出栈,从内存方面使用引用类型也更好。值相等性的意思是两个作为相等比较的值,只有当它们类型相等,且属性的属性名相等且属性值相等,才能视为相等。使用匿名类,我们定义新的对象的时候可以不必定义一个类,这是为了方便我们进行一些对象的生成,特别是当这个类是临时定义的,只需要属性而不需要其他方法,且有可能只会定义一次对象的时候。只能合并相同类型的委托。原创 2023-08-03 15:19:46 · 444 阅读 · 0 评论 -
【C#学习笔记】值类型(2)
结构类型(“structure type”或“struct type”)是一种可封装数据和相关功能的值类型 。 使用 struct 关键字定义结构类型:结构类型具有值语义 。 也就是说,结构类型的变量包含类型的实例。 默认情况下,在分配中,通过将参数传递给方法并返回方法结果来复制变量值。 对于结构类型变量,将复制该类型的实例。使用关键字来保证结构体状态不可变。以此保证结构体内的成员不会修改结构体本身状态。正是由于它是值类型的,因此有可能会被修改,而我们又不希望它被修改。这里也要点出为什么class往往优于原创 2023-08-02 17:28:35 · 470 阅读 · 0 评论 -
【C#学习笔记】值类型(1)
C# 如何避免装箱和拆箱操作什么是值类型:所有的结构都是抽象类型System.ValueType的直接派生类,而System.ValueType本身又是直接从System.Object派生的。根据定义所知,所有的值类型都必须从System.ValueType派生,所有的枚举都从System.Enum抽象类派生,而后者又从System.ValueType派生。所有的值类型都是隐式密封的(sealed),目的是防止其他任何类型从值类型进行派生。什么是引用类型:在c#中所有的类都是引用类型,包括接口。原创 2023-08-02 15:25:58 · 416 阅读 · 0 评论