摘要:
vs中的///文档注释类似java中/** */文档注释。能自动的生成帮助文档。如果我想在每次创建文件时,自动生成文档注释(注意是自动生成文档注释而不是帮助文档),如下面的代码,需要设置VS的模板,新创建的cs类文件会根据模板的样子进行生成。01using System;02using System.Collections.Generic;03using System.Linq;04using System.Text;0506namespace MODEL07{08///09/// FileName: Class1.cs10/// CLRVersion: 2.0.50727.305311/// 阅读全文
摘要:
C#有string关键字,在翻译成.NET类时,它就是System.String.有了它,像字符串连接和字符串复制这样的操作就简单了.1. string 是引用类型还是值类型引用类型操作当使用重载操作符”=”给string对象赋值时,string的对象是引用类型,它保留在堆上,而不是堆栈上.因此,当把一个字符串赋给另一个字符串时,会得到对内存中同一个字符串的两个引用.例如,修改其中一个字符串,就会创建一个全新的string对象(注意,这个过程发生在”=”中),而另一个字符串没有改变.考虑下面的代码:public class MyClass{ public static void Main() 阅读全文
摘要:
其实他们两个都是委托【代理】的简写形式。一、【action<>】指定那些只有输入参数,没有返回值的委托Delegate的代码:[csharp] public delegate void myDelegate(string str); public static void HellowChinese(string strChinese) { Console.WriteLine("Good morning," + strChinese); Console.ReadLine(); } myDelegate d = new myDelegate(HellowChines 阅读全文
摘要:
switch语句是我们日常工作中最常见也是争论最多的(goto被忽视的前提下)。在重构中也把switch语句看成是一种代码的坏味道。但如何改造现有的switch代码并在今后去避免呢?本文从两方面进行探讨。1 类型转化 在不同的抽象层次上对于同一个对象可能会用不同的定义。举个简单的例子,在计算器中,用户输入的操作符号可能是字符型的,而程序内部实现的时候需要用枚举型。因此可能就会有这样的函数。 publicclassCalculator {publicenumOPERATOR {Add, Minus, Multiply, Divide, Unknown}; publicsta... 阅读全文
摘要:
如果在为方法声明参数时未使用 ref 或 out,则该参数可以具有关联的值。可以在方法中更改该值,但当控制传递回调用过程时,不会保留更改的值。通过使用方法参数关键字,可以更改这种行为。paramsparams 关键字可以指定在参数数目可变处采用参数的方法参数。在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字。示例:字面意思比较难懂,所以看示例很有用。// keywords_params.cs using System; class App // keywords_params.cs { publicstaticvoid Use... 阅读全文
摘要:
代码坏味道:是指在代码之中潜在问题的警示信号。并非所有的坏味道所指示的确实是问题,但是对于大多数坏味道,均很有必要加以查看,并作出相应的修改。1. 重复的代码如果你在一个以上的地点看到相同的程序结构,那么当可肯定:设法将它们合而为一,程序会变得更好。同一个class内的两个函数中含有重复的代码段两个兄弟class的成员函数中含有重复的代码段两个毫不相关的class内出现重复的代码段注意:重复的代码是多数潜在BUG的温床!2. 过长的函数拥有短函数的对象会活的比较好、比较长。程序愈长就愈难理解函数过长阅读起来也不方便小函数的价值:解释能力、共享能力、选择能力原则:每当感觉需要以注释来说明点什么的 阅读全文
摘要:
AOP在.NET中的应用,个人也属于学习阶段,欢迎大家拍砖!本文的例子模拟用户注册的场景,主要通过代码演示几种方案的实现方式。静态代理通过装饰模式实现静态代理,大家一看代码基本就明白了。用户注册接口和实现publicinterfaceIUserProcessor{voidRegUser(Useruser);}publicclassUserProcessor:IUserProcessor{publicvoidRegUser(Useruser){Console.WriteLine("用户已注册。Name:{0},PassWord:{1}",user.Name,user.Pass 阅读全文
摘要:
4.1.Net平台AOP技术概览.Net平台与Java平台相比,由于它至今在服务端仍不具备与unix系统的兼容性,也不具备类似于Java平台下J2EE这样的企业级容器,使得.Net平台在大型的企业级应用上,常常为人所诟病。就目前而言,.Net平台并没有提供AOP技术的直接实现,而微软在未来对于.Net的发展战略目标,我们仍未可知。但我相信微软对于目前炙手可热的AOP技术应该不会视而不见。也许在未来的.Net平台下,会出现类似于Spring那样的轻量级IoC容器,加上O/R Mapping的进一步实现与完善,随着Windows Server操作系统的逐步推新,.Net平台对于企业级系统开发的支持 阅读全文
摘要:
3.1 Java平台AOP技术概览3.1.1 AOP技术在Java平台中的应用AOP在实验室应用和商业应用上,Java平台始终走在前面。从最初也是目前最成熟的AOP工具——AspectJ,到目前已经融和在企业级容器JBoss中的JBoss AOP,均建立在Java平台上。前面已经描述到,AOP的目的就是将核心关注点和横切关注点分离,实际上这就是一种分散关注(seperation of concerns)的思路。在Java平台下,如果要开发企业级的应用,非J2EE莫属。一个J2EE应用系统只有部署在J2EE容器中才能运行,那么为什么要划分为J2EE容器和J2EE应用系统? 通过对J2EE容器运行 阅读全文
摘要:
2.1 AOP技术起源AOP技术的诞生并不算晚,早在1990年开始,来自Xerox Palo Alto Research Lab(即PARC)的研究人员就对面向对象思想的局限性进行了分析。他们研究出了一种新的编程思想,借助这一思想或许可以通过减少代码重复模块从而帮助开发人员提高工作效率。随着研究的逐渐深入,AOP也逐渐发展成一套完整的程序设计思想,各种应用AOP的技术也应运而生。AOP技术在Java平台下是最先得到应用的。就在PARC对于面向方面编程进行研究的同时,美国Northeastern University的博士生Cristina Lopes和其同事也开始了类似的思考。最终,美国国防先 阅读全文