
C#
尹自强
这个作者很懒,什么都没留下…
展开
-
C#的is和as规则
is检查对象类型的兼容性,并返回结果,true或者false;不会抛出异常; 如果对象为null,则返回值永远为 false。object o = new object(); class A { } if (o is A) //执行第一次类型兼容检查{ A a = (A) o; //执行第二次类型兼容检} as检查转载 2012-03-10 23:44:24 · 321 阅读 · 0 评论 -
Windows进程间通信的各种方法
进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码、数据以及它可利用的系统资源(如文件、管道等)组成。多进程/多线程是Windows操作系统的一个基本特征。Microsoft Win32应用编程接口(Application Programming Interface, API)提供了大量支持应用程序间数据共享和交换的机制,这些机制行使的活动称为进程间通信(InterProc转载 2013-03-25 08:51:05 · 602 阅读 · 0 评论 -
插件的“动态替换”
设想这样一种场景:我们的服务系统提供一系列的功能服务,而以后会有更多新的功能服务增加进来,也可能出现功能服务需要被更改或移除的情况。对于这样的服务系统,一个常见的基本的要求就是,在添加/移除/更新功能服务的时候不能停止的服务系统的运行。通常,将每一项服务封装成一个插件Dll,可以非常容易地实现“插件热插拔”(关于插件的基础信息),但是插件的“热替换”(“动态替换”)却成了一个问题。原因在于,当我们转载 2013-03-14 16:20:06 · 793 阅读 · 0 评论 -
如何实现离线文件?
近段时间,有几个朋友问我如何实现类似QQ离线文件的功能。不想一一作答,就写一篇博文来比较完整的解释这个问题。 所谓“离线文件”,就是当接收者不在线时,发送者先把文件传送给服务端,在服务器上暂时保存,等接收者上线时,服务端再把文件发送给他。当然,要想实现离线文件的功能,其最基本的前提是要先实现传送文件的功能,我们就以ESFramework提供的传送文件的功能为基础,在其之上一步步完成一转载 2013-03-14 16:00:39 · 702 阅读 · 0 评论 -
Effective C# 精髓 (待续)
昨天买了一本《Effective C#》,看了几个Item,虽然没有当初读《Effective C++》时的那般震撼,但是也收获不少。把其中的要点记录于下,有些条款加上了自己的理解,权当作读书笔记吧 :-)Item 1: Always Use Properties Instead of Accessible Data Members 这个是地球人都知道的条款了。你需要记住,属性是转载 2013-03-14 14:40:43 · 415 阅读 · 0 评论 -
C# 插件构架实战
一、引言 1. 问题的引入 假设你设计的程序已经部署到用户的计算机上,并且能够正常运行了。但是有一天,用户打来了电话——他们要求增加新的功能。确定了用户的需求后,你竟然发现原有的软件架构已经无法胜任新增任务的需求——你需要重新设计这个应用了!但问题是,就算你又用了一个开发周期完成了用户需要的应用,却不能保证用户的需求不会再次变更。也就是说,需求蔓延的可能性依然存在。因此,这种情转载 2013-03-06 16:47:37 · 522 阅读 · 0 评论 -
aspx与ashx差别
Asp.net web(即aspx页面)是由System.Web.UI.Page派生的类表示,示例:publicpartial class UserCenter : System.Web.UI.Page包含了web页面的全部功能,比如我们经常使用到的控件,包括用户控件,以及master page等都来自于page,功能十分强大 Asp.net一般处理程序(即ashx文件)I转载 2012-12-11 13:06:16 · 1125 阅读 · 0 评论 -
ASP.NET一般处理文件Handler.ashx属性IsReusable详解
利用ASP.NET开发网站,比较多使用的是ASPX文件,很少使用ASHX文件,但ASHX在有些方面还是蛮实用的,如图片防盗链、验证码、AJAX读数据等,而且速度也快点,省去了Page类生命周期这些步骤。ASHX有个IsReusable属性,很多人对此有疑惑,以下为你详细解答:IsResuable属性指示是否可以重用于其他IHttpHandler实例,那么什么时候可以设置为true,什么时候不能转载 2012-12-11 13:01:04 · 871 阅读 · 0 评论 -
简述递归
Method(x) { if (x) //x已达最小,不可分解 { //返回结果 } else { //(1)采取某种方法分解x //(2)继续调用Method //(3)根据(1)和(2)计算结果 //返回结果 } }原创 2012-11-24 16:57:07 · 301 阅读 · 0 评论 -
给 C# 开发者的代码审查清单
清单1.确保没有任何警告(warnings)。2.如果先执行Code Analysis(启用所有Microsoft Rules)再消除所有警告就更好了。3.去掉所有没有用到的usings。编码过程中去掉多余代码是个好习惯。(参考:msdn)4.在合理的地方检查对象是否为’null’,避免运行的时候出现Null Reference Exception。5.始终遵循命名规范。一般而转载 2013-08-22 09:38:23 · 536 阅读 · 0 评论 -
异步编程(进程,线程,计时器)
进程 - 启动一个程序时,系统在内存中创建了一个新的进程(process). - 进程就是一组资源,他们构成了一个正在运行的程序。这些资源包括虚拟地址空间,文件句柄以及程序启动需要的其他东西载体。 线程 - 在进程中,系统创建了一个叫做线程(thread)的内核对象,线程体现了一个程序的真实执行情况。 - 程序开始运行时,系统在线程中开始执行Main方法的第一条语句转载 2014-07-18 15:40:28 · 1117 阅读 · 0 评论 -
动态库和静态库
静态库动态库dll转载 2016-11-15 14:04:09 · 327 阅读 · 0 评论 -
解决winform中的panel重绘闪烁问题
利用winform开发时,可能都会遇到一个问题,就是在panel中不停的重绘图形时,图形会不停的闪烁。要解决这个办法只需要开启双缓冲即可,由于初学c#,理解的不是很深,所以不多做解释。以下代码亲测可以解决这个问题:首先创建一个自己的panel类:转载 2014-07-31 09:49:48 · 4958 阅读 · 2 评论 -
线程 线程池 线程同步 实例
线程:using System;using System.Collections.Generic;using System.Text;using System.Threading; namespace 线程Thread{ class Program { public class MyThread { priva转载 2014-07-31 13:23:50 · 493 阅读 · 0 评论 -
c#的ThreadPool使用笔记
摘要:系列文章,从一个基本的代码说起,逐步探索 ThreadPool 的奥妙。首先,看看线程池的样子:转载 2014-07-31 10:31:02 · 436 阅读 · 0 评论 -
SharpZLib 使用方法
在做项目的时候需要将文件进行压缩和解压缩,于是就从http://www.icsharpcode.net下载了关于压缩和解压缩的源码,但是下载下来后,面对这么多的代码,一时不知如何下手。只好耐下心来,慢慢的研究,总算找到了门路。针对自己的需要改写了文件压缩和解压缩的两个类,分别为 ZipClass和UnZipClass。其中碰到了不少困难,就决定写出来压缩和解压的程序后,一定把源码贴出来共享,让首次转载 2014-07-30 12:30:51 · 675 阅读 · 0 评论 -
C# 3种定时器对比
功能描述转载 2014-08-04 09:01:13 · 989 阅读 · 0 评论 -
Windows API 函数大全
1. API之网络函数WNetAddConnection 创建同一个网络资源的永久性连接WNetAddConnection2 创建同一个网络资源的连接WNetAddConnection3 创建同一个网络资源的连接WNetCancelConnection 结束一个网络连接WNetCancelConnection2 结束一个网络连接WNetCloseEnum 结束一次枚举操作转载 2014-07-04 14:32:36 · 433 阅读 · 0 评论 -
Lambda 表达式
“Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式树类型。所有 Lambda 表达式都使用 Lambda 运算符 =>,该运算符读为“goes to”。 该 Lambda 运算符的左边是输入参数(如果有),右边包含表达式或语句块。 Lambda 表达式 x => x * x读作“x goes to x times x”。可以将此表达式分配给委托类转载 2014-07-21 14:10:47 · 567 阅读 · 0 评论 -
记《使用C#开发搜索引擎》
垂直搜索技术定向的网络爬虫网页结构化信息抽取技术或元数据采集技术中文分词,全文检索其他信息处理技术垂直搜索引擎技术评估全面性更新性准确性功能性站内搜索实现方式基于数据库查询基于爬虫抓取的站内搜索站内搜索软件系统 搜索语法逻辑运算符与(+,空格)或(OR,|)非(-)【神雕侠侣 -电视剧】:搜索有关神雕侠侣、不是电视剧的内容【小说 intitl原创 2012-12-05 00:21:40 · 2793 阅读 · 0 评论 -
.Net调用Office Com组件的原理及问题
今日用到WordToHtml的方法,需要添加对office组件的引用(Microsoft.Office.Interop.Word)程序集Microsoft.Office.Interop.Word D:\Program Files\Microsoft Visual Studio 9.0\Visual Studio Tools for Office\PIA\Office12\Micros转载 2012-11-20 13:16:22 · 468 阅读 · 0 评论 -
单链表与List<T>究竟哪个遍历速度快?
):“C#事件的背后是一个委托链表(单链表),单链表的遍历调用性能远低于数组链表(List)”。这句话让我比较纳闷,因为从我的直觉来说,两种做法之间即使性能有差距,也不该是“远高于”啊。不过我提出这个疑问之后,firelong回应到(还是原话)“间接指针移动,和i++哪个快慢很难辨析吗?”于是我想,还是做个试验吧。试验代码很简单:public class Node{ public N转载 2012-04-02 11:27:25 · 1019 阅读 · 0 评论 -
Net性能优化总结
1. C#语言方面 1.1 垃圾回收 垃圾回收解放了手工管理对象的工作,提高了程序的健壮性,但副作用就是程序代码可能对于对象创建变得随意。 1.1.1 避免不必要的对象创建 由于垃圾回收的代价较高,所以C#程序开发要遵循的一个基本原则就是避免不必要的对象创建。以下列举一些常见的情形。 1.1.1.1 避免循环创建对象 ★ 如果对象并不转载 2012-04-02 11:36:49 · 275 阅读 · 0 评论 -
SQL Server 2005 数据类型和.Net数据类型的对应关系
SQL Server 2005 数据类型.NET Framework 数据类型LINQ 数据类型bigintSystem.Int64longbinarySystem.Byte[]System.Data.Linq.BinarybitSystem.Booleanboo转载 2012-04-02 11:31:22 · 315 阅读 · 0 评论 -
c# 泛型集合Dictionary<TKey,TValue>
泛型最常见的用途是泛型集合,命名空间System.Collections.Generic 中包含了一些基于泛型的集合类,使用泛型集合类可以提供更高的类型安全性,还有更高的性能,避免了非泛型集合的重复的装箱和拆箱。 很多非泛型集合类都有对应的泛型集合类,我觉得最好还是养成用泛型集合类的好习惯,他不但性能上好而且 功能上要比非泛型类更齐全。下面是常用的非泛型集合类以及对应的泛型集合类:转载 2012-04-02 11:30:41 · 513 阅读 · 0 评论 -
cookie操作类(加密,获取,删除)
using System; using System.IO; using System.Text; using System.Diagnostics; using System.Web.Security; using System.Security; using System.Security.Cryptography; using System.Web; using System转载 2012-03-10 23:43:31 · 277 阅读 · 0 评论 -
禁用ViewState
ViewState 是什么?1 ViewState 用来跟踪和保存控件的状态信息。否则这些信息可能会丢失,原因可能是这些值不随着 form 回发,或者根本就不在 page 的 html 中。2 ViewState 中保存着代码中改变的控件属性,通过代码绑定到控件的任何数据,以及由用户操作触发,回发的任何更改。3 ViewState 还提供了一个状态包(StateBag),转载 2012-03-10 23:43:58 · 308 阅读 · 0 评论 -
把IList和泛型数组转换为DataTable
/// /// 将集合类转换成DataTable/// /// 集合/// public static DataTable ToDataTable(IList list){DataTable result = new DataTable();if (list.Count > 0){PropertyInfo[] propertys = list[0].GetT转载 2012-03-10 23:41:38 · 247 阅读 · 0 评论 -
ASP.NET页面间数据传递的方法
引言Web页面是无状态的, 服务器对每一次请求都认为来自不同用户,因此,变量的状态在连续对同一页面的多次请求之间或在页面跳转时不会被保留。在用ASP.NET 设计开发一个Web系统时, 遇到一个重要的问题是如何保证数据在页面间进行正确、安全和高效地传送,Asp.net 提供了状态管理等多种技术来解决保存和传递数据问题,以下来探讨。NET 下的解决此问题的各种方法和各自的适用场合。ASP.N转载 2012-03-11 21:38:59 · 263 阅读 · 0 评论 -
如何成为“10倍效率”开发者
Brad Feld 的一篇文章 The Rise of Developeronomics 中提到了“10倍效率的开发者(10x developer)”的概念(伟大的开发者的效率往往比一般的开发者高很多,而不只是一点点),Adam Loving 在读了之后受到启发,并向多位大牛(Ben Sharpe、Collin Watson 和 Jonathan Locke)询问如何成为“10倍效率的开发者”转载 2012-04-02 11:38:42 · 316 阅读 · 0 评论 -
.net集合类的研究--哈希表(二)--HashSet<T>
.Net3.5之后出现了HashSet,硬翻译过来就是“哈希集合”,跟“哈希”两字挂钩说明这种集合的内部实现用到了哈希算法,用Reflector工具就可以发现,HashSet和Dictionary使用了相同的存储方式和哈希冲突算法,那么,它跟Dictionary和Hashtable在使用上到底有什么不同?HashSet对集合运算的操作HashSet是一个Set集合,虽然List、Colle转载 2012-04-02 11:18:54 · 314 阅读 · 0 评论 -
C#基础概念二十五问
当初学 C# 时是找个人大概问了一下数据类型和分支语句就开始做项目了。这两天又全面的看了一下相关的基础知识(学而时习之嘛),总结了25个问题:1.静态变量和非静态变量的区别?2.const 和 static readonly 区别?3.extern 是什么意思?4.abstract 是什么意思?5.internal 修饰符起什么作用?6.sealed 修饰符是干什么的?转载 2012-11-20 12:46:39 · 298 阅读 · 0 评论 -
List<T>与IList<T>的区别
IList是个泛型接口,定义了一些操作方法,这些方法要你自己去实现。List是个泛型类,已经实现了IList定义的那些方法。List比IList拥有更多的方法,如果仅用来做数据集合,用IList就行,如果还需要更多的对集合进行操作,用List。IList泛型接口是ICollection泛型接口的子代,并且是所有泛型列表的基接口。它仅仅是所有泛型类型的接口,并没有太多方法可以方便实用,如转载 2012-11-14 09:45:21 · 350 阅读 · 0 评论 -
线程间操作无效:从不是创建控件“XX”的线程访问它
委托和以前C语言中的函数指针非常类似,但它是类型安全的,代码Dim d As New SetTextCallback(AddressOf SetText),可理解为将d指向了SetText,public delegate sub SetTextCallback(byval print as string) 这句是声明委托类型,可理解为函数指针原型. 1.在FORM_LOAD中加代码转载 2012-08-28 21:17:50 · 645 阅读 · 0 评论 -
C# 异步UDP通讯
C#下的Socket编程有同步和异步之,他们的具体区别偶还是没有完全搞清楚,最近研究的了一下这方便的东西,写在此做个记录。在UDp监听某一端口通讯的时候,可以采用同步,使用线程,然后接受阻塞的模式,但是还可以使用异步的方法,比如下列子: using System.Net.Sockets;using System.Net;using System;using System.Text转载 2012-08-28 20:52:52 · 657 阅读 · 0 评论 -
C#窗体最小化事件隐藏捕获
最小化的时候隐藏,是很常见的功能,但是因为C#没有最小化的事件的处理,所以不能直接使用,在网上找了找,别人都是resize和其他几个事件处理,感觉这样不好,所以自己找了找资料,实现代码如下。窗体的Deactivate事件,判断窗体状态是否为最小化,其他事件判断会出现问题: private void MainForm_Deactivate(object sender, EventArgs转载 2012-08-28 11:47:26 · 3018 阅读 · 0 评论 -
ASP.NET服务端GZIP压缩(CompressionModule压缩模块)
本人推荐的一个模块,同样可以压缩aspx页面请求的所有资源及支持强大自定义功能的压缩模块,与HttpCompress6.0一样能自定义要压缩那种类型的资源及不压缩那种类型的资源、也可定义要压缩指定的页面或不压缩指定的页面,并且还有开启Cache资源的功能及指定压缩目录的强大功能,另外也不会像HttpCompress6.0会出现axd文件无效的BUG,这样此压缩模块就能完美支持各种ajax框架!!转载 2012-04-06 16:22:04 · 521 阅读 · 0 评论 -
.net集合类的研究-哈希表(一)--Hashtable,Dictionary<TKey,TValue>
今天来探究哈希表,.net内置的哈希表容器是Hashtable类,而Dictionary是对应的泛型哈希表.哈希表-Hashtable的实例化一般我们实例化ArrayList或List的时候,如果不指定容量,则其内部是赋值为一个静态的空数组。当有添加操作时,会实例化为一个长度为4的数组,如果容量满了以后,再添加,就会自动扩充为两倍的容量。哈希表也有一个类似的情况,new Hashtab转载 2012-04-02 11:12:51 · 342 阅读 · 0 评论 -
C# List<T>排序总结
1.对基础类型排序方法一:调用sort方法,如果需要降序,进行反转:List list = new List();list.Sort();// 升序排序list.Reverse();// 反转顺序方法二:使用lambda表达式,在前面加个负号就是降序了List list= new List(){5,1,22,11,4};list.S转载 2018-01-04 15:57:13 · 1215 阅读 · 0 评论