![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C#学习笔记
文章平均质量分 87
c#学习笔记
qq_41809086
这个作者很懒,什么都没留下…
展开
-
C#学习笔记13 集合框架(未完成 线程安全的还没总结)
C#学习笔记13 集合框架概念System.Collections 命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。System.Collections.Generic 命名空间包含定义泛型集合的接口和类,泛型集合允许用户创建强类型集合,它能提供比非泛型强类型集合更好的类型安全性和性能。System.Collections.Specialized 命名空间包含专用的和强类型的集合,例如,链接的列表词典、位向量以及只包含字符串的集合。文档中的扩展方法大多数原创 2021-05-03 23:00:41 · 133 阅读 · 0 评论 -
C# 学习笔记14 再战多线程Lock
C# 学习笔记14 再战多线程Lock参考参考:https://blog.csdn.net/weixin_39839541/article/details/111845549?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2aggregatepagefirst_rank_v2~rank_aggregation-1-111845549.pc_agg_rank_aggregation&utm_term=volatile%E原创 2021-05-03 22:11:13 · 333 阅读 · 0 评论 -
C#学习笔记12 IO
本篇一,二,三基于https://www.cnblogs.com/c7jie/p/12799728.html ,一 入门1. 什么是I/O在C# 中,I/O体系整体分为三个部分,后台存储流、装饰器流、流适配器,具体划分如下图所示:2.Stream 基类C#中,所有流都是继承自Stream类,Stream类定义了流应该具有的行为和属性,使得开发人员可以忽略底层的操作系统和基础设备的具体细节。C#对流的处理忽略了读流和写流的区别,使其更像是一个管道,方便数据通信。流涉及到三个基本操作:读取 -转载 2021-05-02 23:01:23 · 325 阅读 · 0 评论 -
C# 学习笔记整理篇11 LINQ
Linq(基于他人)基础正如前言所述,Linq是一种对集合、数据源的集成式查询方式,它是对IEnumerable<T>的扩展方法集,所以想要使用Linq的话,需要引用两个命名空间 System.Linq和System.Linq.Expressions。Linq有两种使用方式,一种是通过方法链的方式调用,一种是类似SQL语句的方式进行数据查询。方法链是基础,类SQL方式是语法糖。下面简单介绍一下两种方式的使用,不过首先先假设我们有一个数据很多的集合:IEnumerable<int&g转载 2021-05-02 20:53:11 · 182 阅读 · 0 评论 -
C# 学习笔记0 我还要学啥
仍需学习的集合框架资源上锁LINQDI八大设计模式SOLID设计原则网络编程EF异步编程与并发编程(未完成)内部类的作用原子操作类JAVA与C#区别(未完成)寻址机制https: //docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/operators/stackalloc关于指针和staclalloc和unsafe方法调用栈中内存的分配,关于stack frame的分析 ,形参的压栈是由调用者压的,无论这形原创 2021-04-06 21:06:37 · 93 阅读 · 1 评论 -
C#学习笔记10 泛型,partial,Lambda
泛型泛型无处不在,和谁都有一腿,泛化即模糊抽象化,比如听音乐和听周杰伦的歌,听青花瓷,这就是泛化->特化泛型的重要,除了它无处不再外,常用的数据结构都是泛型的。缺点,泛型T实际上在类中只能当作object使用为什么需要泛型类型膨胀一个商品对应一个盒子,盒子类型膨胀了成员膨胀一个盒子装了苹果后,就不装了,其实这盒子还能装书的,这样就浪费了其他方法如果使用一个接口或者粗俗点用object声明变量,那么使用这对象的时候,需要判断其类型,然后进行类型转换泛型登场拯救世界pu原创 2021-04-06 21:06:14 · 145 阅读 · 0 评论 -
C# 学习笔记9 接口,反射,单元测试
接口接口和抽象类开闭原则概念开闭原则规定“软件中的对象(类,模块,函数等等)应该对于扩展(增加功能)是开放的,但是对于修改是封闭的”,这意味着一个实体是允许在不改变它的源代码的前提下变更它的行为。对于稳定的,固定的,确定的代码,进行封装。对于不稳地的,有可能改变的,声明为抽象,就留子子子孙孙类实现吧哈哈哈。扩展是指,增加方法,字段等,在一个方法中增加代码不叫扩展,叫修改 。下面代码就是不符合开闭原则的,因为如果增加车辆的话,需要修改父类的Run代码。上面问题我们可以运用重写的多态,遵循开闭原原创 2021-04-06 21:05:52 · 185 阅读 · 0 评论 -
C#学习笔记8 事件
事件了解事件事件就是拥有者的一个工具,手机(拥有者)拥有震动马达(工具),可以利用马达震动这个事件,通知手机主人(对象2)概念统一下面图都是一个意思,同一对象事件的应用简单例子一个事件多个事件处理器using System;using System.Timers;namespace EventConsole{ class Program { static void Main(string[] args) {原创 2021-04-06 21:05:35 · 131 阅读 · 0 评论 -
C#学习笔记7 委托
委托委托如果声明在Program里面的话,就需要Program.Calc Calc1=new Calc(XXX)创建委托对象,这就是嵌套声明委托的使用场景模板方法优点这里使用了委托,那么我拓展Produce的 产品的时候,无需在wrapFactory中修改封装的逻辑代码,也无需重复复制黏贴wrapFactory中的代码,只需增加ProductFactory中的生产方法,以及增加主调用方法中的逻辑即可。换个贴近日常写代码的说法,相当于把wrapFactory中可能重复的代码抽离了,不用像原创 2021-04-06 21:07:06 · 99 阅读 · 0 评论 -
C#学习笔记6 类型转换,异常
类型转换隐式(implicit)类型转换小的数据类型转换成大的数据类型,不丢失精度子类向父类的转换(父类作为变量的化,那么是用不了子类的方法的 白学JAVA了) 这岂不是丢失方法了吗装箱 int x=1; Object=x显式(explicit)类型转换有可能丢失精度甚至发生错误的转换,cast即 JAVA中的强制类型转换 32位强制转16位, 相当于砍掉前16位拆箱,int y=(int) x使用Convert类ToString方法与各类型数据的Parse原创 2021-04-05 16:05:47 · 651 阅读 · 0 评论 -
C#学习笔记5 操作符
操作符(详细)目录优先顺序由上到下,同一级的由左到右,但是最后的赋值和lambda表达式则从右到左。操作符是函数的简计法,操作符其实就是函数operator 对关键字进行重载操作符是函数的简计法,操作符其实就是函数(.、()、^ 和 .. 运算符无法进行重载。 [] 运算符也被视为非可重载运算符。 使用索引器以支持对用户定义的类型编制索引。)operator 关键字的主要作用是用来重载运算符的,还可以用于类或结构中类型的自定义转换。下面看个例子x.y 成员访问运算符和表达式 .原创 2021-04-05 16:04:07 · 217 阅读 · 0 评论 -
C#学习笔记4 封装,方法,vs调试
封装概念装箱即封装,封装是为了将数据的一些操作封闭起来,避免不正当操作。比如事件就是对委托的一种封装。装箱与拆箱装箱和拆箱是值类型和引用类型之间相互转换是要执行的操作。装箱在值类型向引用类型转换时发生拆箱在引用类型向值类型转换时发生int x=100然后Object o=x;这时候会在堆内存中开辟一个地址,然后100装箱放入这地址中,最后栈内存中记录地址拆箱 int y=(int)o,找到o在堆内存的值,然后cp到栈内存中装箱操作和拆箱操作是要额外耗费cpu和内存资源的,所以在c# 2原创 2021-04-05 16:03:24 · 156 阅读 · 0 评论 -
C#学习笔记3 迭代器,为什么需要补码,stack与heap
迭代器 int[] intArray = new int[] { 1, 2, 3, 4, 5 }; IEnumerator enumerator = intArray.GetEnumerator(); enumerator.MoveNext();//刚开始必须移动 返回布尔值 Console.WriteLine(enumerator.Current); enumerator.MoveNe原创 2021-04-05 16:02:16 · 97 阅读 · 0 评论 -
C#学习笔记2 数据类型
数据类型五大数据类型类型例如类Window,form,console结构体Int32,Int64,Single,Double枚举HorizontalAlignment,Visbility接口委托action action<> func<>类默认构造器会把值类型赋值为0,引用类型赋值为null。当实例没有变量引用时,gc会将其视为内存垃圾,收回,收回会执行实例的析构器 //默认构造器原创 2021-04-05 16:00:57 · 210 阅读 · 0 评论 -
C# 学习笔记1 编码规范
编码规范花括号1.花括号不能像JAVA那样了(这个看个人风格吧,各有优点,但是vs默认是下面这样的)public static void Main(string[] args) { }2.if这些即使只有一条语句也要用花括号3.右花括号 “}” 后建议加一个注释以便于方便的找到与之相应的 {。如:while(1){ if(valid) { } // if valid else { } // not valid} // end原创 2021-04-05 16:00:05 · 117 阅读 · 1 评论