C#
文章平均质量分 75
Ciel_Bubble
这个作者很懒,什么都没留下…
展开
-
关于Linq的一些应用场景
场景一:1.Nodes是一个存放Node类型的List;2.每一个Node都有存前一个Node以及后一个Node的id;3.通过Linq来查找某个Node的所有前Node;var preNodes = Nodes.Where(x => x is ProcessNode && x?.Ports[0].NextNodeId == selectedNode.Id).ToLi...原创 2020-04-23 14:11:45 · 282 阅读 · 0 评论 -
关于C#UserControl闪烁的问题
Winform在单个UserControl中控件布局过多,在加载的时候就会出现页面闪烁的问题。网上也查了很多资料,有很多涉及到BufferedGraphics,双缓冲,重写控件,以及将构造函数中的东西都放在Form_Load中,然而都没有什么卵用。最后发现重载CreateParams可以做到,而且不是网上大部分写的只对WS_EX_COMPOSITED进行处理。 解决方法如下: 在容器Form...原创 2019-11-18 17:49:33 · 747 阅读 · 0 评论 -
Task
Task 多线程的几种用法大体上都是相似的,首先我们查看Task的定义: 如果不想一辈子做一个Coder的话,我们在使用新知识的时候需要取自学,就拿Task来说,我们可以看到一些信息: 1.Task是一个非静态的类,在使用的时候需要声明。 2.Task的构造函数是有参数的。 3.Task需要一个委托来作为参数,这个委托是没有返回值的。 4.在我们不知道重载是干什么的时候我们可以查看对...原创 2019-08-17 19:16:51 · 301 阅读 · 0 评论 -
Attribute特性
首先特性不是装逼用的。C#中特性可以理解为Python的装饰器,他是在不改变原函数的情况下,给与一些新的功能。比如说在序列化中,我们需要给需要序列化的类添加特性[Serialize],这个相当于告诉计算机,我标记为serialize的类才可以去做序列化。 其次,特性会用到映射,在后期自定义的时候,会用到很多映射方面的知识。 创建using System;namespace Attrib...原创 2019-08-23 18:26:16 · 179 阅读 · 0 评论 -
简单多线程、线程池与异步多线程
异步 1.常见的同步方法:using System;namespace AsyncPractice{ internal class AsyncClass { public AsyncClass() { Action action = () => this.DoSomething(); a...原创 2019-08-09 10:29:20 · 348 阅读 · 0 评论 -
23种设计模式——单例模式(SingletonPattern)
单例模式 在日常编程中,实例化必不可少,有一些特殊的类,需要保证在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率。这种系统中只存在一个实例化的类,通常可以使用单例模式做。 这是一个普通的类以及实例化: Singleton.csusing System;using System.Threading;namespace SingletonPattern{ pub...原创 2019-07-23 10:50:56 · 118 阅读 · 0 评论 -
C#委托 Lambda Func/Action
在将讲Lambda之前需要先看看委托和匿名方法: 匿名方法using System;namespace LambdaPractice{ internal class Program { private static void Main(string[] args) { var anonymous1 = new ...原创 2019-07-24 21:55:55 · 337 阅读 · 0 评论 -
23种设计模式——桥接模式(Bridge Pattern)
GitHub代码桥接模式 假设我们这有几电脑,信息如下:品牌系统系统版本显卡DellOS:WindowsWin10NVIDIAMacBooxMacOSmacOS 10.15Intel组装机LinuxLinux_CentOS release 6.5AMD我们定义一个抽象类来记录这些信息,并且用电脑看个电影玩个游戏:using Sys...原创 2019-07-19 18:22:37 · 161 阅读 · 0 评论 -
C#序列化与反序列化
BuildProgrammerList是一个返回值为List的静态方法,主要用途为向List中添加多条信息,List的类型为Person。1.Binaryusing System;using System.IO;using System.Runtime.Serialization.Formatters.Binary;using IOSerialize.IO;using IOSerial...原创 2019-07-29 11:38:09 · 127 阅读 · 0 评论 -
关于C#动态生成控件后控件之间控制问题解决方法
之前写了个有关PDF发票信息提取,文件管理的小工具。其中碰到了个小问题:动态生成几组未知数量的控件,访问他们的事件,属性,以及控件之间相互控制。自己写了一套,后来觉得不是很好,但是网上没有查到相关资料,就分享出来吧。 这里打个比方,现在需要导入未知数量的PDF文件,为一条PDF文件对应一组控件用于后期控制,比如这组控件有一个Label,多个Button,Label可以用于显示文件路径,Butt...原创 2019-07-16 16:56:42 · 774 阅读 · 0 评论 -
C#反射(Reflection)
反射是.net中的一种重要机制,通过反射操作,我们可以得到程序集(dll)的成员信息(namespace,class,method,properties,field,constructor等)。我们经常通过反射来调用一些在程序集中我们不知道的方法,属性,字段的赋值,实例化等等。1.加载dll在这里我们需要自己生成一个程序集(AssemblyTest.Interface|GitHub代码),然...原创 2019-07-15 18:23:10 · 637 阅读 · 0 评论 -
C#协变和逆变
协变(covariant)和逆变(contravariant)是C#4.0新增的概念。首先,我们都知道C#中父类可以充当子类来使用,就像我们在泛型中说到的object是所有类型的父类,那么以下变量赋值时不会报错的:string str = string.Empty;object obj = str;但是如果换一种方式来表达: 创建一个Human类:using System;usin...原创 2019-07-04 16:40:36 · 1747 阅读 · 0 评论 -
C#泛型
1.什么是泛型 应该都听过刘谦的魔术《魔壶》吧,想要什么味道的饮料都可以倒出来。在C#中,可以将泛型比作刘谦手上的壶,我们需要的类型比作壶倒出来的饮料。在碰到一些功能相似,类型不同的方法时,我们就可能会用到泛型。当然object也能达到泛型的效果,但是泛型不是object,他们有很大的区别。2.一个需要用泛型的示例 在之前上网课的时候有老师举出了一些代码示例,在这就先借鉴一下:using ...原创 2019-07-01 15:16:16 · 524 阅读 · 0 评论