Operator运算符重载与Implicit隐式类型转换
    
            
摘要:class Person { public int Age { get; set; } public string Name { get; set; } public static int operator -(Person p1, Person p2)//int为想减结果类型,-表示对-进行运算符重载 //参数为待计算的两个值 { return p1.Age - p2.Age; }
//当重载>后,要求必须重载< pu...
        
阅读全文
 
        
            
    再度提升!.NET脏字过滤算法
    
            
摘要:再度改进,在脏字可能存在的情况下,例如出现了多个脏字前Length-1部分时,性能相比http://www.cnblogs.com/xingd/archive/2008/01/31/1060425.html中描述的又提升了300%~400%。直接贴出全部代码了,通过新增的一个byte[char.MaxValue]和BitArray(char.MaxValue),减少了大量的Substring和GetHashCode的调用。耗的内存也不算多,除HashSet外,仅需要144k内存。引用此文或者使用此代码请说明出处,谢谢,以便于我将来的更新。2008-02-02修订:if (index > 
        
阅读全文
 
        
            
    .net c#获取自定义Attribute
    
            
摘要:前言: 在c#开发中,有时候我们需要读取 Attribute中的信息(关于Attribute, 我自己把他理解成一个可以为类,属性标记的东西,这个标记可以为你提供一些关于类,方法,属性的额外信息)我们如何获取这些标记的信息,如何获取自定义Attribute信息。正文:1.获取一个枚举的详细信息假设我们有这样一个枚举public enum Category { /// <summary> /// 英语 /// </summary> English, /// <summary> /// 汉语 ...
        
阅读全文
 
        
            
    运用Composite模式构造JSON
    
            
摘要:Json是如今流行的Ajax或Service数据交换格式,.NET使用DataContractJsonSerializer(System.Runtime.Serialization.Json命名空间下),可以很方便地在json字符串和实体对象间转换。在Restful WCF服务站点上,更无须写代码序列化Json。服务默认以xml形式返回结果,但如果Web请求头信息中的Accept属性为application/json,客户端得到的就是以json格式序列化了结果。客户端用JQuery实现很简单,只要调用ajax函数时,设置dataType:’json’就可以了。客户端也可以发送json到让服务处
        
阅读全文
 
        
            
    ASP.NET中进行消息处理(MSMQ) 二
    
            
摘要:在我上一篇文章《ASP.NET中进行消息处理(MSMQ)一》里对MSMQ做了个通俗的介绍,最后以发送普通文本消息和复杂的对象消息为例介绍了消息队列的使用。本文在此基础上继续介绍MSMQ的相关知识点,最后还是通过一个示例程序来分析MSMQ在实际项目开发中的应用。建议:如果你对MSMQ不够了解,在你阅读本文前请先阅读第一部分:《ASP.NET中进行消息处理(MSMQ)一》。一、消息传递的优先级 在MSMQ中消息在队列里传输是分有优先级的,这里我就以实例的形式介绍下关于优先级的使用,优先级一共有七种,MessagePriority枚举里全部进行了封装。因这里只作程序演示就不一一列举出,仅用了H...
        
阅读全文
 
        
            
    ASP.NET中进行消息处理(MSMQ)
    
            
摘要:MSMQ是微软消息队列的英文缩写。那么什么是消息队列?这些介绍网上一大片这里就不多说了。本文对于大虾级的人物来说这只是小玩意而已,对于初学者来说这文章还是有一定的帮助,希望路过的大虾们别笑话我班门弄斧。一、MSMQ介绍和安装消息队列 关于MSMQ详细的介绍请大家向http://www.baidu.com/或http://www.g.cn/等专家咨询。 使用消息队列的优点:稳定、消息优先级、脱机能力以及安全性。 消息队列分为用户创建的队列(专用队列)和系统队列,用户队列分为,。我是Windows XP,看下图所示(myQueue为自己创建的消息队列,msmqtriggersnotifiat...
        
阅读全文
 
        
            
    Visual Studio 2008 单元测试
    
            
摘要:开发组件的时候使用VS集成的单元测试功能会很方便1.新建一个类库项目,并为其中的类添加一个方法,方法任意之后右键点击代码窗口选择方法为新建项目命名然后在解决方案管理中就多了相应的Test Project和一个叫Solution Items的解决方案文件夹。相关的文件作用如下:localtestrun.testrunconfig 本地测试运行配置文件;MySchoolPro.vsmdi 测试管理文件;AuthoringTest.txt 提供创建测试的说明,包括向项目增加其他测试的说明;XXXXTest.cs 包含测试对象对应的测试方法,以及测试初始化和测试清除的方法.修改输入参数,及对比参数,还
        
阅读全文
 
        
            
    一个C#分析html的包,从老外的一个Spider程序里提取出来的
    
            
摘要:一个C#分析html的包,以前思考如何分析html,总是毫无头绪,情况太多,太复杂。后来在一个老外写的Spider程序里发现了这个。非常好用,屡试不爽,现在才知道自己写程序还在一个很低的层次,尤其是面向对象思想的理解。利用继承的思想来分解问题,利用多个类来实现多种情况的变化,这个才是OO思想,而自己很多时候只是为了OO而去OO,其实水平还是停留在面向过程里。好好分析下这些代码,受益颇多。/// <summary>
/// Attribute holds one attribute, as is normally stored in
/// an HTML or XML file. 
        
阅读全文
 
        
            
    Visual Studio自定义调试窗体两个小技巧
    
            
摘要:这篇文章讲述如何自定义你的调试窗体。这些技巧在你调试应用程序的时候是非常有用的。当你调试的时候,你可能希望简化调试窗体的信息,或者在调试窗体上除去对你不重要的不必要的信息,这篇文章将会帮助到你。本文翻译:Few Tips on Customizing Debugging Window View in Visual Studio。 使用DebuggerBrowsable特性可以自定义调试窗体。 使用DebuggerDisplay特性可以自定义调试信息的显示。 要使用这些特性,需要引用System.Diagnostics命名空间。技巧1、使用DebuggerBrowsable特性 你可以通过在.
        
阅读全文
 
        
            
    C#中的多态
    
            
摘要:封装、继承、多态,面向对象的三大特性,前两项理解相对容易,但要理解多态,特别是深入的了解,对于初学者而言可能就会有一定困难了。我一直认为学习OO的最好方法就是结合实践,封装、继承在实际工作中的应用随处可见,但多态呢?也许未必,可能不经意间用到也不会把它跟“多态”这个词对应起来。在此抛砖引玉,大家讨论,个人能力有限,不足之处还请指正。 之前看到过类似的问题:如果面试时主考官要求你用一句话来描述多态,尽可能的精炼,你会怎么回答?当然答案有很多,每个人的理解和表达不尽相同,但我比较趋向这样描述:通过继承实现的不同对象调用相同的方法,表现出不同的行为,称之为多态。例1:public class Ani
        
阅读全文
 
        
            
    .Net 自定义应用程序配置
    
            
摘要:引言几乎所有的应用程序都离不开配置,有时候我们会将配置信息存在数据库中(例如大家可能常会见到名为Config这样的表);更多时候,我们会将配置写在Web.config或者App.Config中。通过将参数写在配置文件(表)中,我们的程序将变得更加灵活,只要对参数进行修改,再由程序中的某段代码去读取相应的值就可以了。而如果直接将配置值写在程序中,当配置需要改变时,则只能通过修改代码来完成,此时往往需要重新编译程序集。本文不是讲述.Net Framework中诸多的内置结点如何设置,比如httpHandler、httpModule、membership、roleManager 等。而是讲述.Net
        
阅读全文
 
        
            
    C#中Split用法
    
            
摘要:1、用字符串分隔:usingSystem.Text.RegularExpressions;stringstr="aaajsbbbjsccc";string[]sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase);foreach(stringiinsArray)Response.Write(i.ToString()+"<br>");输出结果:aaabbbccc2、用多个字符来分隔:stringstr="aaajbbbscccjdddseee";strin
        
阅读全文
 
        
            
    值类型的相等比较
    
            
摘要:5.3.2 值类型的相等比较在进行值类型的相等比较时,采用与引用类型相同的规则:ReferenceEquals()用于比较引用,Equals()用于比较值,比较运算符可以看作是一个中间项。但最大的区别是值类型需要装箱,才能把它们转换为引用,才能对它们执行方法。另外,Microsoft已经在System.ValueType类中重载了实例方法Equals(),以便对值类型进行合适的相等测试。如果调用sA.Equals(sB),其中sA和sB是某个结构的实例,则根据sA和sB是否在其所有的字段中包含相同的值,而返回true或false。另一方面,在默认情况下,不能对自己的结构重载==运算符。在表达式
        
阅读全文
 
        
            
    引用类型的相等比较
    
            
摘要:5.3 对象的相等比较在讨论了运算符,并简要介绍了等于运算符后,就应考虑在处理类和结构的实例时相等意味着什么。理解对象相等比较的机制对编写逻辑表达式非常重要,另外,对实现运算符重载和数据类型转换也非常重要,本章的后面将讨论运算符重载。对象相等比较的机制对于引用类型(类的实例)的比较和值类型(基本数据类型,结构或枚举的实例)的比较来说是不同的。下面分别介绍引用类型和值类型的相等比较。5.3.1 引用类型的相等比较System.Object的一个初看上去令人惊讶的方面是它定义了3个不同的方法,来比较对象的相等性:ReferenceEquals()和Equals()的两个版本。再加上比较运算符==,
        
阅读全文