摘要:泛型不仅能用来做容器,还能够提供代码复用的手段。在泛型的参与下,许多设计就可能更精妙,更具扩展性。今天我就来演示一个利用泛型增强的抽象工 厂模式。我们知道,抽象工厂(Abstract Factory)模式是将工厂和产品全部抽象化,一个抽象工厂生成一组抽象产品,而一个具体工厂则生成具体产品的一个特定组合。它能够维持这种相关对象组 合的一致性,并使得用户不需要了解工厂和产品的具体实现。传统的Abstr...
阅读全文
文章分类 - .net基础&本质
C#语法 .net本质的积累
摘要:.NET Framework 泛型是在.NET Framework 2.0的公共语言运行库(CLR)中的增加的一项新功能,类似于C++的模版,但不如C++的模板灵活,不过也有一些自己的特性。 泛型为.NET Framework引入了类型参数的概念,这样便可以设计出这样的类和方法:它们把指定类型的工作推迟到客户端代码声明并实例化类或方法的时候执行。比如,通过泛型类型参数T,程序员就可以编写其他客户端...
阅读全文
摘要:在.NET的Reflection中,ConstructorInfo和MethodInfo都是从MethodBase直接继承而来的.MethodInfo的Invoke函数使用很简单,就是直接MethodInfo.Invoke(object target,object[] parameters);但是ConstructorInfo的Invoke函数有一点不一样.同MethodInfo,Construc...
阅读全文
摘要:在网上查找了不少的资料,可以说大同小异,概念性的东西网上一搜一堆, 今天把反射的东西整理了一下,供大家使用,我保证我这里是最全面的东西,当然也是基础的东西, 在学好了这一切的基础上,大家可以学习反射的具体插件等应用,老鸟就不用看了. 首先我们建立一个类库,将它生成为HelloWorld.dll, usingSystem; namespaceWebtest ...{ publicinterfa...
阅读全文
摘要:拉姆达表达式(Lambda Expression)可以算是一种匿名方法的实现吧。 在C# 2.0中引入了匿名方法的概念,我们可以写下如下代码:1class Program2{3static void TestLambdaExpression()4{5 List<int> list = new List<int>();6 7 list.Add(1);8 list.Add(2)...
阅读全文
摘要:1 (int)是一种类型转换;当我们从int类型到long,float,double,decimal类型,可以使用隐式转换,但是当我们从long类型到int类型就需要使用显式转换,否则会产生编译错误。2 int.Parse()是一种类容转换;表示将数字内容的字符串转为int类型。 如果字符串为空,则抛出ArgumentNullException异常; 如果字符串内容不是数字,则抛出Format...
阅读全文
摘要:C#预处理器指令 控制流语句中的条件表达式是在运行时求值的。而C#预处理器指令是在编译时调用的。预处理器指令(preprocessor directive)告诉C#编译器要编译哪些代码,并指出如何处理特定的错误和警告。C#预处理器指令还可以告诉C#编辑器有关代码组织的信息。 语言对比:C++ —— 预处理 C和C++风格的语言包含一个预处理器(preprocessor),它是独立于编译器的一个实用...
阅读全文
摘要:在进行C#编程时候,有的时候我们需要判断一个字符串是否是数字字符串,我们可以通过以下三种方法来实现。【方法一】:使用try{} catch{}语句。 我们可以在try语句块中试图将string类型的字符串变量转换为int类型,如果该字符串不是数字字符串则会抛出异常,这时在catch语句块中就能捕获异常。一旦发现异常,则不是数字字符串。我们可以以下三种方式将string类型转换为int类型。(1)i...
阅读全文
摘要:一.神奇的var 在C#3.0中增加了一个变量声明var,这个声明和JavaScript 的 var类似,但也有不同。 1. 相同点,它可以用var来声明任何类型的局部变量。 2. 不同点,它仅仅负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,而且只能是局部变量。 二.相同点 它可以声明 var integer = 10; var name = "edisundong"; v...
阅读全文
摘要:Reflection,中文翻译为反射。这是.Net中获取运行时类型信息的方式,.Net的应用程序由几个部分:‘程序集(Assembly)’、‘模块(Module)’、‘类型(class)’组成,而反射提供一种编程的方式,让程序员可以在程序运行期获得这几个组成部分的相关信息,例如:Assembly类可以获得正在运行的装配件信息,...
阅读全文
摘要:解决无法读取项目文件"***.csproj",系统找不到指定路径 以上情况可能由于2个问题出现的,1 路径不对。 2 开发工具与打开工具版本不对 解决办法: 解决路径不对: 针对路径不对,我们可以用以下办法解决 用记事本打开sln文件,将绝对路径修改为相对路径就行了 例如: Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "E:\AJAXEn...
阅读全文
摘要:out(C# 参考)更新:2007 年 11 月out关键字会导致参数通过引用来传递。这与 ref关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用out关键字。例如:C#复制代码class OutExample{static void Method(out int i){i = 44;}static void Main()...
阅读全文
摘要:呵呵,第一个问题有意思,没有这么做过。但有一点,不应该重写Finalize()函数。按照面向对象的原理来看,如果你重写了一个基类函数但没有使用override,它将隐藏基类中的函数,可能产生非预期的结果与冲突。 所以第二个问题实际上应该是不考虑重写Finalize()方法前提下如何妥善使用Dispose()和析构函数(这是一个比较常见的问题了)。回答如下: (1)首先要明白一个原则:资源在哪个类...
阅读全文
摘要:垃圾回收.NET Framework 的垃圾回收器管理应用程序的内存分配和释放。每次您使用new运算符创建对象时,运行库都从托管堆为该对象分配内存。只要托管堆中有地址空间可用,运行库就会继续为新对象分配空间。但是,内存不是无限大的。最终,垃圾回收器必须执行回收以释放一些内存。垃圾回收器优化引擎根据正在进行的分配情况确定执行回收的最佳时间。当垃圾回收器执行回收时,它检查托管堆中不再被应用程序使用的对...
阅读全文
摘要: 在很久很久以前,DataSet操作是.Net中的一个重要使用手段,其实现在也是。 在很久很久以前,我的项目操作方式是通过数据Fill一个DataSet,之后返回给业务层做处理,之后给页面去显示。 随着时间积累,越来越不喜欢DataSet,我记得有人跟我说DataTable比Dat...
阅读全文
摘要:SessionID 属性用于唯一地标识在服务器上包含会话数据的浏览器。SessionID 值由 ASP.NET 随机生成,并存储在浏览器的不过期 Cookie 中。每次向 ASP.NET 应用程序发送请求时,SessionID 值便被发送到 Cookie 中。如果您希望禁止在 ASP.NET 应用程序中使用 Cookie,但是仍使用会话状态,则可以通过以下方法将应用程...
阅读全文
摘要: Session 的作用相当大,它的最主要作用就是可以针对某一个用户的特殊的连接,建立一个私人的变量,并且这个变量可以在不同的页面之间进行传递。除非用户在20分钟(或由用服务器设定的时间)内没有点击任何页面,否则这个变量会一直保留下去。这是一个很有用的功能,同时也是一个很占用服务器资源的功能。 很有用体现在:1)它可以自动的进行页...
阅读全文
摘要:关于Assembly.CreateInstance()与Activator.CreateInstance()方法的区别呃``最近用惯了Activator.CreateInstance()和Activator.CreateInstance<T>(),非常好用,可是在看许多别人的源代码的时候,大多数用了Assembly.Load("AssemblyName").CreateInstance...
阅读全文
摘要:反射,Reflection,通过它我们可以在运行时获得各种信息,如程序集、模块、类型、字段、属性、方法和事件通过对类型动态实例化后,还可以对其执行操作一般用于插件式框架程序和设计模式的实现,当然反射是一种手段可以充分发挥其能量来完成你想做的任何事情(前面好象见过一位高人用反射调用一个官方类库中未说明的函数。。。)示例:[代码]反射实例化对象并调用其方法,属性和事件的反射调用略去[代码]结果:Nam...
阅读全文

浙公网安备 33010602011771号