摘要:## Encoding编码 先看笔试题目 ```c# string strTmp = "a1某某某"; int a = System.Text.Encoding.Default.GetBytes(strTmp).Length; int b = strTmp.Length; Console.Write
阅读全文
摘要:泛型 Generic 允许您延迟编写类或方法中的编程元素的数据类型的规范,直到实际在程序中使用它的时候。 逆变与协变 协变就是父类转变为子类,逆变就是子类转变为父类。 通过在泛型参数上使用in或out关键字,可以得到逆变或协变的能力 in 逆变 out 协变 IEnumerable<out T> /
阅读全文
摘要:BackgroundWorker Winfrom程序经常会有一些后台耗时操作,例如批量处理,如果在主UI线程上执行,UI线程会卡死,用户的使用感觉会很差。 而BackgroundWorker提供了执行异步操作,配合ProgressBarControl进度条控件,用户能直观看到当前进度,主UI线程也不
阅读全文
摘要:Parallel三种用法 Parallel.Invoke Parallel.for Parallel.forEach Parallel.Invoke class Program { static void Main(string[] args) { var watch = Stopwatch.Sta
阅读全文
摘要:申明对象 有几种申明对象的方式 var object dynamic 匿名对象 详细比较这几种申明的对象有什么区别 var var 仅能声明方法内的局部变量 var 声明的变量在被赋值后类型即确定下了,后续程序中不能在赋其他类型的值 Object 所有的类型都派生自object. 所以它可以赋值为任
阅读全文
摘要:摘要 锁是处理多线程时经常会用到的,是把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待。 Monitor 常用属性和方法: Enter(Object) 在指定对象上获取排他锁。 Exit(Object) 释放指定对象上的排他锁。
阅读全文
摘要:委托/delegate 本质是一个class,在class内外申明都可以 函数作为参数传递 用于实现事件和回调方法(线程,lambda) 派生自System.Delegate 类 申明委托delegate 实例化委托 参数是函数 事件Event 本质就是委托 区别在于用event修饰后,不能在对象外
阅读全文
摘要:反射 可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。 优点 灵活 缺点 性能 可读性差,难维护调试 使用情境 需要动态创建实例 动态判断实例中属性或者方法 特性 核心类 using System.Reflection; System.Type【核心】 这个类中包含了
阅读全文
摘要:构造函数 方法名与类名相同 没有返回值类型 必须要通过new的形式调用 可以重载 静态构造函数 静态构造函数用于初始化任何静态数据,或执行仅需执行一次的特定操作。 将在创建第一个实例或引用任何静态成员之前自动调用静态构造函数。 析构函数 用于在类销毁之前释放类实例所使用的托管和非托管资源 一般GC隐
阅读全文
摘要:BackgroundWorker Winfrom程序经常会有一些后台耗时操作,例如批量处理,如果在主UI线程上执行,UI线程会卡死,用户的使用感觉会很差。 而BackgroundWorker提供了执行异步操作,配合ProgressBarControl进度条控件,用户能直观看到当前进度,主UI线程也不
阅读全文
摘要:Remoting 微软随.NET推出的一种分布式应用解决方案 管理应用程序域之间的 RPC 允许不同应用程序域之间进行通信 主要概念 远程对象 运行在Remoting服务器上的对象。 信道 信道是服务器和客户机进行通信用的 TCP:局域网内,速度快 HTTP:要穿越防火墙 IPC/Inter-Pro
阅读全文
摘要:特性 对程序中的元素进行标注,用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为,本质上是一个类,其为目标元素提供关联附加信息,并在运行期以反射的方式来获取附加信息。 System.Attribute [Attribute(parametar)] 目标元素 程序集(assembly)
阅读全文
摘要:摘要 复制一直是面试喜欢问的问题,这里总结一下 浅复制与深复制 浅copy:只复制引用,修改后对原来的变量有影响。 深copy:复制引用和引用的对象,修改后对原来的变量没有影响 =复制 浅复制 值类型:复制值,修改后对原来的变量没有影响 引用类型:复制引用地址,修改后对原来的变量有影响 String
阅读全文
摘要:摘要 string虽然是引用类型,但使用过程中却又有很多值类型的特征。 字符串恒定性 一旦创建了一个string,在managed heap上分配了一块连续的内存空间,之后将不能以任何方式对这个string进行修改使之变长、变短、改变格式。 所有对这个string进行各项操作(比如调用ToUpper
阅读全文
摘要:yield 关键字 看到这个语法糖很久了,一直也没有在实际中使用,最近在新项目中看到有人用了,还是挺方便的,总结一下使用方法 单词yield有产出,产量的意思,在c#中作为语法糖配合for返回IEnumerable yield return一次一个的返回 yield break终止迭代 public
阅读全文
摘要:说明 看到之前老代码里面写的进度条都不动,整理一下ProgressBarControl的用法 Init初始化 progressBarControl.Properties.Minimum = 0; //最小值 progressBarControl.Properties.Maximum = 0; //最
阅读全文
摘要:default 关键字 之所以会用到default关键字,是因为泛型需要在不知道类型参数为值类型还是引用类型的情况下,为对象实例设置默认值。 class TestDefault<T> { public T foo() { return default(T); } } 默认值参考 // 值类型 def
阅读全文
摘要:说明 古老的项目还在用原生ado DbType DbType.AnsiString 对应varchar DbType.String 对应nvarchar 加参数时like使用 用like时发现查不出数据,记录一下正确的写法 var db = Commmon.DBFactory.CreateDefau
阅读全文
摘要:说明 MemoEdit是DevExpress中的多行文本框 卡死 某次使用时不停的向其中加行,最终在2K多行时卡死 // 外面循环 this.txt_message.Text += "\r\n" + $"rowNo:{message}"; // 错误写法 正确的写法 MemoEdit继承自TextE
阅读全文
摘要:说明 GridControl是devexpress中的表格控件,有很多玩法,也有很多坑,记录一下遇到的问题。 隐藏group 刚拖进来的GridControl总是有个header "Drag a column header here to group by that column",一般用不到,隐藏
阅读全文