随笔分类 -  C#基础

摘要:由于下载安装VS一直是100KB以下所以在网上早了一下方法: 1:方法一 :通过vpnFQ 2:方法二:下载离线安装包 3:方法三:修改host解析 这边只介绍修改host解析的方法步骤: 参考地址:https://blog.csdn.net/Zhang_Xu258/article/details/ 阅读全文
posted @ 2019-10-13 13:27 SignX 阅读(2588) 评论(0) 推荐(0) 编辑
摘要:1:编译器管道 2:语法分析 3:语义分析 4:代码转换 5:代码重构 c#6开始用一个新的编译器--Roslyn。最初,c#编译器是用c++编写的。现在,它的主要部分是用c#和.Net创建的。编译器平台是开源的。 开源地址:https://github.com/dotnet/roslyn 新的编译 阅读全文
posted @ 2019-10-07 15:51 SignX 阅读(1312) 评论(0) 推荐(0) 编辑
摘要:一:在运行期间检查代码和动态编程 介绍自定义特性、反射和动态编程。自定义特性允许把自定义元数据与程序元素关联起来。 这些元素局是在编译过程中创建的,并嵌入到程序集中。 反射是一个普通术语,它描述了运行过程中检查和处理程序元素的功能。 反射允许完成一下任务 1):枚举类型的成员 2):实例化新对象 - 阅读全文
posted @ 2019-09-22 23:05 SignX 阅读(711) 评论(0) 推荐(0) 编辑
摘要:1:错误的出现并不总是编写引用程序的人的原因,有时应用程序会因为应用程序的最终用户引发的动作或运行代码的环境而发生错误。无论如何,我们都应预测应用程序中出现的错误,并相应地进行编码.--在可能出现异常的地方都要try catch。 c# 语言提供了处理这种 情形的最佳工具,称为异常处理机制。 以下介 阅读全文
posted @ 2019-09-17 20:25 SignX 阅读(661) 评论(0) 推荐(0) 编辑
摘要:1:筛选 Where :使用where子句,可以合并多个表达式。例如:找出赢得至少15场比赛的美国和英国赛车手 一样的结果: 其中r:A中的A所指定 https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/ 阅读全文
posted @ 2019-09-03 23:20 SignX 阅读(750) 评论(0) 推荐(0) 编辑
摘要:Linq 语言集成查询:可以使用相同的语法访问不同的数据源。 查询表达式必须以from字句开头,以select或group自居结束,在这两个字句之间,可以使用where,orderby,join,let和其他from子句。 注意:变量query只指定了Linq查询,该查询不是通过这个赋值语句执行的, 阅读全文
posted @ 2019-09-02 20:20 SignX 阅读(246) 评论(0) 推荐(0) 编辑
摘要:局部变量不能被共享。 不变的集合很容易在多个线程中使用,因为他们不能改变。如果希望使用应在多个线程中改变的集合。 .Net在命名空间System.Collections.Concurrent中提供了几个线程安全的集合类。 线程安全的集合可防止多个线程以相互冲突的方式访问集合。 为了对集合进行线程安全 阅读全文
posted @ 2019-08-21 00:29 SignX 阅读(306) 评论(0) 推荐(0) 编辑
摘要:说明:数组大小是固定的。但可以使用列表作为动态增长的集合。队列以先进先出的方式访问元素。栈以后进先出的方式访问元素。链表可以快速插入和删除元素。但搜索操作比较慢。通过键和值可以使用字典。它的搜索和插入操作比较快。集用于唯一项 无序HashSet<T> 有序 SortedSet<T> 阅读全文
posted @ 2019-08-02 23:26 SignX 阅读(240) 评论(0) 推荐(0) 编辑
摘要:Dictionary<TKey,TValue>类支持每个键关键一个值,Lookup<TKey,TElement>类非常类似于Dictionary<TKey,TValue>类,但把键映射到一个值集合上,这个类在程序集System.Core中实现 用System.Linq名称空间定义。 Lookup<T 阅读全文
posted @ 2019-08-01 23:17 SignX 阅读(1099) 评论(0) 推荐(0) 编辑
摘要:栈:是一个后进先出(LIFO)的容器 栈 push()方法在栈中添加元素,用Pop()方法获取最近添加的元素。 于Queue<T>类相似,Stack<T>类实现IEnumerable<T>和ICollection接口 Count 返回栈中的元素个数 Push 在栈顶添加一个元素 Pop 从站定删除一 阅读全文
posted @ 2019-07-31 22:46 SignX 阅读(561) 评论(0) 推荐(0) 编辑
摘要:数组和Array类实现的接口 数组大小是固定的。如果元素个数是动态的就应该使用集合类。 集合类型:List<T> 、队列、栈、链表、字典和集。 多线程中使用的位数组和并发集合。 集合类区别和性能差异: 泛型集合类 在System.Collections.Generic 名称空间中。 特定类型的集合类 阅读全文
posted @ 2019-07-29 20:37 SignX 阅读(267) 评论(0) 推荐(0) 编辑
摘要:委托是寻址方法的.Net版本。委托是类型安全的类,定义了返回类型和参数类型。 委托类不仅包含对方法的引用,也可以包含多个方法的引用。 lambda表达式与委托直接相关。当参数是委托类型时,就可以使用lambda表达式实现委托引用方法。 委托可以砸定义类的任何相同地方定义委托。可以在在类内部和外部定义 阅读全文
posted @ 2019-07-23 22:40 SignX 阅读(286) 评论(0) 推荐(0) 编辑
摘要:数组和元组实现接口 IStructuralEquatable和IStructuralComparable。 这两个接口可以比较引用和内容。接口都是显式实现的,所以在使用时需要把元组和数组强制转换为这个接口。 IStructuralEquatable接口用于笔记哦啊两个元组或数组是否有相同的内容,IS 阅读全文
posted @ 2019-07-19 23:18 SignX 阅读(413) 评论(0) 推荐(0) 编辑
摘要:1:当我们用vs开发的时候,有时候遇到vs内置的库方法不清楚怎么个用法 可以把鼠标放在不了解的方法上 然后按F1键就会跳转到这个方法相应的MSDN文档上 二:查看源码方式 1:使用反编译工具 2:vs2017到最新IDE 支持反编译源码 F12查看源码vs设置步骤 1)工具-》选项=》文本编辑器-》 阅读全文
posted @ 2019-07-03 23:33 SignX 阅读(2791) 评论(0) 推荐(0) 编辑
摘要:yield语句,用于创建枚举器。 yield Return语句返回集合的一个元素,并移动到下一个元素上。yield break可停止迭代。 包含yield语句的方法或属性也称为迭代块。迭代块必须声明为返回IEnumerator或IEnumerable接口, 或者这些接口的泛型版本。这个块可以包含多条 阅读全文
posted @ 2019-06-17 23:25 SignX 阅读(363) 评论(0) 推荐(0) 编辑
摘要:锯齿数组: 二维数组的大小对应于一个矩形,如对应元素为3X3. 锯齿数据的大小设置比较灵活,在锯齿数组汇总,每一行都可以有不同的大小。 在声明锯齿数组时,要依次放置左右括号。左括号要设置该数组包含的行数。定义 各行中元素个数的右方括号设置为空,因为这样可以为每一行指定行中的元素个数: 迭代锯齿数组中 阅读全文
posted @ 2019-06-17 21:13 SignX 阅读(234) 评论(0) 推荐(0) 编辑
摘要:1:减少代码的选项可以是用Object类,也可以使用泛型 但是Object类进行类型传递不是类型安全的。泛型类使用泛型类型保证了类型安全。 泛型类 泛型方法 泛型接口、结构、委托 泛型优点: 1:性能 装箱和拆箱很容易使用,但性能损失比较大。 泛型的话在编译的时候就会动态生成我们定义他的类型,这样就 阅读全文
posted @ 2019-06-16 00:22 SignX 阅读(218) 评论(0) 推荐(0) 编辑
摘要:垃圾回收器不知道如果释放非托管资源 非托管资源有:文件句柄、网络连接、数据库连接(有的在补充) 有两种机制可以自动释放非托管资源。 1:声明一个析构函数(或叫做终结器-finalizer),作为一个类的成员 2:在类中实现System.IDisposable接口。 垃圾回收器销毁对象之前,可以调用析 阅读全文
posted @ 2019-06-09 23:46 SignX 阅读(262) 评论(0) 推荐(0) 编辑
摘要:栈:操作系统会为每条线程分配一定的空间,Windows为1M.在栈上的成员不受GC管理器控制,直接由操作系统分配,超出作用域,直接释放。 栈先进后出 执行效率高。 堆:主要用来存放引用类型,由GC管理器托管。GC会处理未引用的堆内存。 堆:后进先出 栈和堆区别:值类型存放在栈中(如果这个值类型放在类 阅读全文
posted @ 2019-06-09 21:53 SignX 阅读(777) 评论(0) 推荐(0) 编辑
摘要:继承: 派生(类、接口) 虚方法(Virtual) 一个类只能有一个基类,但是可以继承多个接口。 但是类可以有 多层继承 即:类B继承类A 类C又继承类B。 在基类中声明Virtual 子类可以实现也可以实现Virtual 如果要实现的话 要用Override 重写基类方法或属性。 重写:签名(所有 阅读全文
posted @ 2019-06-08 16:28 SignX 阅读(732) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示