.Net
文章平均质量分 86
KenshinCui
致力于软件开发!
展开
-
C#接口与抽象类的区别
接口和抽象类的区别是很多人比较容易搞混的问题,自己以前也没有很好的总结过,但是最近读到一本书叫Programming .net Components里面谈到了二者的区别,而且做了很好的总结。这本书有中文版的,但是不知道是翻译的原因还是原文就有问题,里面有些说的还是有些小问题。这里根据书中的总结再次加以整理:1. 抽象类可以有实现(包括构造函数),原创 2009-09-17 20:55:00 · 2183 阅读 · 0 评论 -
C#迭代器
摘要:迭代器是C#2.0中添加的功能,它能够使我们在类或结构中支持foreach迭代,而不必实现整个IEnumerable/IEnumerable接口。今天我们就一块看一下什么是c#中的迭代器吧。主要内容:1.foreach的运行机制2.传统集合的遍历3.使用迭代器一、foreach的运行机制我们在程序中经常会用到foreach,如果你把它理解成是for的一种简写形式的话那就太大材小用了,事实上foreach中包含了丰富的内容。我们知道要使用foreach遍历集合就必须实现IEnum原创 2011-04-03 19:59:00 · 3136 阅读 · 1 评论 -
通用Excel导入设计
摘要:有时候我们的数据存放在Excel中(特别是对于用户来说更喜欢使用Excel收集一些常用数据),而系统又需要这些数据来处理其他业务,那么此时我们就需要将这些数据导入到数据库中。但是鉴于Excel的样式多种多样,因此每次导入时都必须书写很多重复的代码。很明显对于一个软件开发者做这些重复劳动是一件很无趣的事情。那么怎样来寻中一种通用的方法呢?今天我们就一块看一下如何来解决这个问题。主要内容Excel操作组件的选择总体设计思路配置文件设计类设计编码实现一点补充简单的测试总结原创 2010-12-24 09:50:00 · 5578 阅读 · 2 评论 -
List排序
摘要:在面向对象开发过程中我们经常将一组对象放到一个特定集合中,此时我们通常使用泛型集合来存放,常见的如:List 、Dictionary等。在使用这些泛型集合时我们有时需要对其进行排序,下面我们就一块看一下List如何进行排序(像Dictionary也有其相应的排序方式,例如说使用Linq语法方式,今天暂且不说)。主要内容:初始工作默认排序方式通过自定义比较器进行排序设定排序范围初始工作假设我们有一个Student对象,简单起见这个对象只有三个属性,分别是学好、姓名、年龄。原创 2010-12-22 19:47:00 · 15054 阅读 · 6 评论 -
.Net使用非托管程序
开发过程中我们或多或少都要使用到非托管组件,例如常见的ActiveX(一般是vb写的.ocx组件)或Com组件(一般是c++编写)。我们都知道.Net程序是可以使用托管代码的,常见的方式大概可以分为两种:一使用使用DllImport的方式调用直接调用非托管代码;二使用转化为"Interop"开头后缀为".dll"的包装组件(可以通过vs添加引用[vs会自动生成相应组件放到obj文件夹中]或者使用Tlbimp.exe工具来实现)。对于第一种方式主要用于简单的调用并且不想用部署ActivX或Com组件的情况原创 2010-10-25 21:50:00 · 2617 阅读 · 0 评论 -
反射发出--Emit
"反射"和"放射发出(Emit)"的关系相信反射大家都不陌生,我也曾写过关于反射的文章,大家有兴趣可以看看,但是今天要说的不是"反射"而是"反射发出(Emit)"。我们知道反射的主要功能是获得对象的信息、调用对象的方法等;而反射发出的主要功能是动态的创建对象。那么是不是二者就没有关系呢?事实上二者不经有关系而且关系十分密切。从命名空间我们就可以看出来,反射处于命名空间下,而反射发出Emit处于命名空间下,它的功能虽然主要是动态创建对象,但是很多反射能够完成的工作它也可以完成而且速度更快(实现当然较反射而原创 2010-10-05 18:02:00 · 4794 阅读 · 2 评论 -
程序开发中异常的处理方式
在开始这篇文章之前我先声明一下:这不是一篇讲述如何捕获异常的文章,更没有过多的代码阐述,而是根据自身经验讲述一种开发过程中常见的异常处理方式。到底是什么意思呢?不妨用一个例子来帮助阐述。在实际开发中往往碰到这种情况:让你在短时间内开发一个小程序,例如期限为三天,这个程序要在三天后交给顾客使用,没有大量的时间去设计和思考并且使用此程序的人只是一般用户且用户量较大。这个时候你如何既保证完成工作又能够保证程序容错性呢?这就是我们必须思考的问题了,毕竟这个程序要交给大量的用户使用啊,而且用户素质又千差万别,很多原创 2010-09-26 14:01:00 · 5959 阅读 · 0 评论 -
ADO.Net2.0新的事务类型
事务提起事务大家并不陌生,通俗点说就是一组操作要么都执行要么都不执行。这个在数据库操作方面用的特别多,因为我们知道数据库完整性特别重要。大家经常拿银行账务举例子:例如你从银行转账,由A账户转到B账户,要转一百万(O(∩_∩)O~,数据大点有说服力)。具体操作就是要从A账户扣除一百万在B账户增加一百万。可是就在刚从A账户扣除一百万之后停电了或者计算机死机了。这个时候很明显A少了一百万,但是对于B并没有加上。现在假设你拥有A账户,由于一笔生意要给对方B转一百万,现在怎么办?对方是不会承认受到钱的,你无缘无故原创 2010-07-31 21:37:00 · 2018 阅读 · 0 评论 -
.Net Framework 4.0和.Net Framework 4.0 Client Profile之间差异引起的错误
遇到问题首先描述一下自己在开发中遇到的一种情况:我自己有个类库,主要是将自己开发中积累。但是近期将类库升级到Visual Studio 2010下竟然不能够使用了,在Visual Studio2008下正常,很是蛊惑,怎么可能呢?是2010的bug吗?不会啊,现在是正式版,别人都没有说过这个bug啊,肯定是自己哪弄错了。解决问题我的类库是Cmj.dll,而我要用的项目是Config原创 2010-05-29 10:42:00 · 15951 阅读 · 2 评论 -
Visual Studio 2010精美壁纸图赏
精美的Visual Studio 2010壁纸,不敢独享,和大家分享一下:Visual Studio 2010精美壁纸图赏转载 2010-05-22 15:18:00 · 2798 阅读 · 0 评论 -
性能优化及用户体验
这个话题跟我的另一篇博客“SQL性能优化”应该是类似的,只不过是关注方面不同。为什么会有意写这样一篇文章呢?这是因为遇到一个项目需要将大量(1-10万)的手机号码存储到txt文件中(每行一个)然后读取到ListBox控件中显示。起初的时候没有多想就用了最直接的方式,读取一万的时候还可以,但是到了五万、十万条感觉就很慢了几乎假死。怎么办呢?不得不思考。 字符串操作的优化原创 2010-05-01 18:37:00 · 2459 阅读 · 0 评论 -
.net中自定义配置文件节点
无论是做asp.net开发还是做winform开发都离不开配置文件,但是很明显这些配置信息都是.net内部设定好的,如果你想自己添加节点怎么办呢?这就是今天我们探讨的主要问题,我们通过继承ConfigurationSection类来使用在配置文件中的自定义节点。好了,下面我们一步一步来做吧。 第一步:在配置文件中添加配置信息,注意包括两个部分。原创 2010-04-20 12:50:00 · 3536 阅读 · 5 评论 -
Lambda表达式
不知道你有没有听说过函数式编程语言(例如Lips),在函数式编程语言里所有的参数和返回值类型都是函数,根本也就没有变量的概念。但是函数式编程语言很明显没有得到广泛的推广,我们这里不讨论函数式编程的好与坏,但是它里面的一些思想对我们还是很有帮助的。说了那么多好像是在谈函数式编程一样,步入正题吧!在.net1.1版本中我们已经有了类似于函数指针的东西,也就是委托,他可以让函数以参数的形式进行传递。原创 2010-04-03 16:49:00 · 2078 阅读 · 0 评论 -
C#反射与自定义属性
具体什么是反射就不再多解释了,通俗一点就是可以由类型得到其相关的信息(事实上如果是方法的话我们还可以去调用)。好了先看一看几个例子: using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Reflection;using原创 2010-03-27 11:30:00 · 7922 阅读 · 1 评论 -
正则表达式
<! /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qf原创 2009-10-30 22:08:00 · 2264 阅读 · 2 评论 -
C#委托
可能很多初学者都听说过委托,但对于委托到底是什么就不得而知了。C#中用关键字delegate(英[ˈdeliɡit,ˈdelɪɡət])生命委托,为此我专门查了一下这个单词的音标和意思解释为:代表;托付。那么究竟什么是委托呢?我们还是没有说明,我翻了一些书籍,对委托的解释:它是一种数据类型,和引用类型类似,不过和一般的类相比,委托的实例不是在堆中的数据,而是一个方法。委托类似于引用类型,和C+原创 2009-09-27 15:08:00 · 1805 阅读 · 0 评论 -
c#事件
我在另一篇博客里面说到委托,其实在.net中一般都是将委托和事件放到一块去谈。因为对于事件机制,大家已经习惯了,即便对于Http无状态传输微软也将其进行了拆分,依次引入服务器端事件。由于自己水平有限,不敢冒昧去说什么原理,只能凭借着自己的一些浅见和大家分享一下我所理解的事件,还是直接看例子吧。using System;using System.Collections.Generic;原创 2009-09-29 14:00:00 · 1708 阅读 · 0 评论 -
使用VisualStudio2010连接CodePlex进行代码管理
摘要:CodePlex是微软的开源工程网站,涉及诸多微软最新技术的开源工程,同时你也可以建立并向世界展示自己的开源工程。同SourceForge、GoogleCode相比CodePlex有其自身的优势,特别是对做.Net开发的朋友来说,由于CodePlex支持TFS代码控制(当然原创 2011-09-30 13:02:33 · 3245 阅读 · 0 评论