摘要:1.C#类和接口的区别
接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念!
而类是负责功能的具体实现!
在类中也有抽象类的定义,抽象类与接口的区别在于:
抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。
但接口是一个行为的规范,里面的所有东西都是抽象的!
一个类只可以继承一个基类也就是父类,但可以实现多个接口
PS:
接口除了规范一个行为之外,在具体项目中的实际作用也是十分重要的,在面向对象的设计原则以及设计模式的使用中,无不体现作为一个接口的使用好处,最直接
的就是设计
原则中OCP(开放封闭原则),我们使用接口,而不需要关 阅读全文
艾伟:C#3.0之自动属性和对象初始化器
2011-08-28 23:55 by 狼人:-), 177 阅读, 0 推荐, 收藏,
摘要:C#3.0中定义属性更加方便,不用再在像之前的版本那样的繁琐,需要先定义存储数据的字段,然后再定义属性器,现在只需要定义属性器就可以了,其它的有编译器自动为我们完成,就可以省去定义字段时需要的那些时间;在对象初始化的时候我们可在对象构造的时候实现对象属性的初始化工作,和集合初始化类似。 1.匿名属性 定义属性如下: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->public class Employee { pu... 阅读全文
艾伟:用 C# 实现带键值的优先队列
2011-08-28 23:55 by 狼人:-), 283 阅读, 0 推荐, 收藏,
摘要:在上一篇随笔 Timus 1037. Memory management 的“进一步的讨论”小节中,我提到:
这个程序中使用 KeyedPriorityQueue 来存储已分配的“内存块”,使用 PriorityQueue 来存储尚未分配的“自由块”。这两个优先队列的算法是一样的,可以想办法合并。这将在下一篇随笔中讨论。 现在,就开始行动吧。
首先,需要一个接口,用来获取键以及获取和设置值,如下所示:
namespace Skyiv.Util
{ interface IKeyValue { K GetKey(T x); V GetValue(T x); voi... 阅读全文
艾伟:HTML重构:战略篇
2011-08-28 23:55 by 狼人:-), 130 阅读, 0 推荐, 收藏,
摘要:《Refactoring HTML: Improving the Design of Existing Web Applications》是一本精彩的HTML重构指南,作者给出了HTML重构的实践路线和方法。本文是《Refactoring HTML》的读书笔记,按照我的理解将全书的分为:战略篇,战术篇,工具篇。 本文是战略篇:全局方略的角度介绍重构的内涵,原因,时机,目标 嗯哼,我们开始: 进行重构就像打一场仗,而战争的发起是要慎重考虑的,《孙子兵法》里面讲“兵者,国之大事,死生之地,存亡之道,不可不察也。”所以动手重构之前首先要回答下面几个问题: 什么是重构?
为什么进行H... 阅读全文
艾伟:一个让人遗忘的角落—Exception(二)
2011-08-28 23:55 by 狼人:-), 219 阅读, 0 推荐, 收藏,
摘要:在上一篇中"一个被人遗忘的角落"中,跟大家简单介绍了一下Exception,也使大家充分的了解了Exception管理在一个项目中的重要性,那如何在我们的项目中处理异常呢?因为我从事的是Web开发,所以我只跟大家讨论Web的解决方案,Win的解决方式,还希望同大家一起探讨。 上一章中我们了解了异常发生的原因,同时也说了不存在没有bug的程序,任何网站都会遇到各种各样的问题,无论是大网站还是小网站都会存在,但大公司和小公司对待异常的态度全然不同,一个是主动出击,一个是守株待兔,我们是好的开发者,我们不能坐以待毙,我们必须主动出击。好了,废话少说,切入主题。 现在网站一般都采用 阅读全文
艾伟:ASP.NET 2.0的编译模型
2011-08-28 23:55 by 狼人:-), 192 阅读, 0 推荐, 收藏,
摘要:ASP.NET 2.0支持两种编译模型(Compilation Model):
一为动态编译(Dynamic Compilation),另一个为先行编译(Precompilation)。 这让程序设计师可以有更宽广的选择以决定不同网站何时该用何种编译模型,不但弹性大大提升,且若採用先行编译网站执行效能还可以更高,分述如下: (一)ASP.NET网站动态编译(Dynamic Compilation) 在ASP.NET 1.0时就已经支援网站动态编译,也就是使用者第一次请求网站网页时,ASP.NET会先将网站程式编译成一个.dll组件档,而后续的请求就会以此来回应,而编译过后的网站执行效... 阅读全文
艾伟:Web.config配置文件详解
2011-08-28 23:55 by 狼人:-), 222 阅读, 0 推荐, 收藏,
摘要:花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法。很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点。所以这里只介绍一些比较常用的节点。 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><?xml version="1.0"?><!--注意: 除了手动编辑此文件以外,您还可以使用 Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 阅读全文
艾伟:对 String 的几个错误认识
2011-08-28 23:55 by 狼人:-), 126 阅读, 0 推荐, 收藏,
摘要:昨天调试一段程序发现内存始终释放不掉,最后终于发现是对String 的错误使用造成,这促使我今天又仔细研究了一下String类型,不研究不知道,一研究发现我过去对String 的很多认识都是错误的,感觉这种错误认识还比较有典型性,于是写下此文和大家一起探讨。 1. String 类型变量追加,或修改后的新String对象是驻留(Interned)的。 如下面代码 Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/ -->strings1=" 阅读全文
艾伟:jQuery性能优化指南(2)
2011-08-28 23:55 by 狼人:-), 134 阅读, 0 推荐, 收藏,
摘要:1.对直接的DOM操作进行限制
这里的基本思想是在内存中建立你确实想要的东西,然后更新DOM 。 这并不是一个jQuery最佳实践,但必须进行有效的JavaScript操作 。直接的DOM操作速度很慢。 例如,你想动态的创建一组列表元素,千万不要这样做,如下所示: var top_100_list = [...], // 假设这里是100个独一无二的字符串 $mylist = $("#mylist"); // jQuery 选择到 <ul> 元素
for (var i=0, l=top_100_list.length; i<l; i++){ $mylist 阅读全文
艾伟:也谈实体验证(Entity Validation)
2011-08-28 23:55 by 狼人:-), 244 阅读, 0 推荐, 收藏,
摘要:环境:
Windows 2008, VS 2008 SP1, Asp.Net Mvc 1.0
------------------------------------------------------------------------------
今晚喝茶看片之时,脑子里忽然闪过一个念头,于是打开VS简单的做了一个实现,于是有了本文...是关于实体验证的,嗯,从头开始说吧。
一. 可能是最原始的验证代码
为了让问题尽量简单,我们就拿一个简单得不能再简单的User类开刀吧。 现在我们要在User类里面加一个方法用于验证User实例的合法性,相信很多人写过如下类似的代码: Check()方.. 阅读全文
艾伟:C#基本语法简介
2011-08-28 23:55 by 狼人:-), 166 阅读, 0 推荐, 收藏,
摘要:一、系统数据类型和C#简化符号 和各任何编程语言一样,C#定义了一组内建数据类型。每种类型都有对应的C#关键字、取值范围和作用,如系统类型中表示真实的或者虚假的类型为 System.Boolean,C#简化符号为bool,范围true或false;又如uint对应的系统类型是System.UInt32,范围 0~4294967295,代表一个无符号的32位数。其中bool是遵循CLS(公共语言规范),而uint则不遵循CLS(符合CLS的.NET代码可以被任何托管编程语言使用,不止是C#,还有VB.NET和托管C++等)。 C#内建的系统型有15个,请查看.NET Framework 3... 阅读全文
艾伟:C# Design Patterns (3) - Decorator
2011-08-28 23:54 by 狼人:-), 181 阅读, 0 推荐, 收藏,
摘要:Decorator Pattern(装饰模式)
装饰模式可「动态」地给一个对象添加一些额外的职责,提供有别于「继承」的另一种选择。就扩展功能而言,Decorator Pattern 透过 Aggregation (聚合) 的特殊应用,降低了类与类之间的耦合度,会比单独使用「继承」生成子类更为灵活。
一般用「继承」来设计子类的做法,会让程序变得较僵硬,其对象的行为,是在「编译」时期就已经「静态」决定的,而且所有的子类,都会继承到相同的行为;然而,若用「装饰模式」以及 UML 的 Aggregation 的设计,来扩展对象的行为,就能弹性地 (flexible) 将多个「装饰者」混合着搭配使用,而 阅读全文
艾伟:C# Design Patterns (2) - Strategy
2011-08-28 23:54 by 狼人:-), 228 阅读, 0 推荐, 收藏,
摘要:Strategy Pattern (策略模式)
所谓 Strategy Pattern 的精神,就是将策略 (算法) 封装为一个对象,易于相互替换,如同 USB 设备一样可即插即用;而不是将策略、具体的算法和行为,硬编码在某个类或客户程序中,导至事后的修改和扩展不易。
若有多种「策略」,就将这些个策略,和这些策略的算法、行为,封装在各个类中,并让这些类,去继承某个公用的抽象类或接口。接着在客户程序中,就可动态引用,且易于更换这些不同的「策略」,不会因为日后添加、修改了某一个「策略」,就得重新修改、编译多处的源代码。此即为一种「封装变化点」的做法,将常会变化的部分进行抽象、定义为接口,亦即实现「 阅读全文
艾伟:VS 2008快捷键
2011-08-28 23:54 by 狼人:-), 209 阅读, 0 推荐, 收藏,
摘要:编辑: CTRL + M, O:折叠当前源代码文件中的所有大纲
CTRL + M, L:将当前源代码的大纲在折叠与展开间切换
CTRL + M, M:将当前选中的源代码在折叠与展开间切换
CTRL + M, P:将当前源代码文档中的所有大纲信息清除
CTRL + K, C or CTRL + E, C:注释掉所有选中的源代码部分
CTRL + K, U or CTRL + E, U:取消掉所有选中的源代码部分的注释
CTRL + K, D or CTRL + E, D:按源码缩进和标准格式来格式化当前文档
CTRL + K, F or CTRL + E, F:按源码缩进和标准格式来格式化选中. 阅读全文
艾伟:WCF安全之EndPointIdentity
2011-08-28 23:54 by 狼人:-), 188 阅读, 0 推荐, 收藏,
摘要:最近在做一个项目,应用了WCF进行分布式开发,中间还涉及到消息路由器等,好在有WCF提供了强大的基础支持,当然,本身也作了不少的扩展,实际,我 最关心的是WCF的安全问题,网上不少朋友介绍的WCF的安全也是少得可怜,微软发布的WCF Security GUID好像讲得也只是入门级别的教程,离真正应用到项目中还是有很大的距离,这也让我萌发了分享的想法,今天先放出来占个位置吧,有反对的朋友砖头轻 点,呵~,可以告诉你,WCF的安全里,有很多的小秘密,当然还是要告诉你,并且有此小秘密是要自己去体验后才知道,在博客排版方面,李会军(军哥)让人 感觉最舒服,在解说方面,军哥也是以简洁著称,我在这里... 阅读全文
浙公网安备 33010602011771号