-
简单工厂、工厂方法与抽象工厂大比拼
简单工厂、工厂方法和抽象工厂都属于设计模式创建型,严格意义上简单工厂不属于23设计模式之一(违背了开闭原则),本文为了完整描述三工厂演变过程,对三工厂进行了整体的总结和学习,并通过三者之间的特点比较总结出各自的优缺点。 一、简单工厂: 在没有工厂之前,大家都是自给自足,生产一部车或其他工具都是自己来完成,有了工厂之后,告诉它需求就会出来...阅读全文
-
C#设计模式之责任链模式
实例: 实现一个简单的加薪流程 UML类图: 实例实现代码: [csharp] static void Main(string[] args) { CommonManager jinli = new CommonManager("金利"); Majordomo zongjian = new Majordomo("宗剑"); GeneralManager zhongjingli = new GeneralManager("钟精励"); jinli.SetSuperior(zongjian); zongjian.SetS...
-
关于RSA加密算法的长度问题
RSA是常用的非对称加密算法。近来有学生在项目中使用System.Security类库中的RSA加密算法时,出现了“不正确的长度”,这实际上是因为待加密的数据超长所致。.net Framework中提供的RSA算法规定,每次加密的字节数,不能超过密钥的长度值减去11,而每次加密得到的密文长度,却恰恰是密钥的长度。所以,如果要加密较长的数据,可以采用数据截取的方法,分段加密。或者增加自定...
-
IQueryable接口与IEnumerable接口比较
今天写代码的时候调到IQueryable里面看它的方法,发现它是实现IEnumerable接口的,then i'm confused! 要区分他俩还是先写段代码来看看吧~ 我们拿出以前那个练习EF增删改查的代码改一改: [csharp] #region 查询单个实体 using (var dbContext = new SecondChargeEntities())//先创建访问数据库的入口 ...
-
C# 拷贝数组的几种方式
突然接触到,所以就写一下共享。 首先说明一下,数组是引用类型的,所以注意不要在复制时复制了地址而没有复制数值! 其实在复制数组的时候,一定要用new在堆中开辟一块新的空间专门用于存放数组,这样才是有效的。 (1) int[] pins = { 9, 3, 7, 2 }; int[] copy=new int[pins.length]; for (int i = 0; i < copy.length; i++) { copy[...
-
C#把金额转换为汉字表达式
/* * 创建日期: 2014年09月04号 * 功能:Money类型转换 * */ namespace Net.String.ConsoleApplication { using System; using System.Collections.Generic; public class MoneyHelper { public static string[] chineseDigits = new string[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; /// <summary> /// 把金额转换为汉字表示...
-
使用vs2010编译lua5.1源码生成lua.lib
一、打开vs2010 二、创建项目 新建项目->win32控制台应用程序->下一步->应用程序设置中选择静态库,不勾选预编译头->完成。具体如下图: 三、拷贝源码 将lua源码中的*.h文件拷贝到项目的头文件文件夹下,将lua源码中的*.c文件拷贝到项目的源文件文件夹下。 四、生成lua.lib 项目右键->生成。此时即可在项目的Debug文件夹下看到生成的 lua.lib了。
-
.NET中struct与class的区别
在.net中的struct与class有很多相似之处,比如可以直接new,对于成员可以直接XX.field,以至于有不少程序员在用时,将其混在一起,分不清有何区别。这两者有何区别呢? 1.类型不同 我们先来看一段代码 [csharp] view plaincopy static void Main(string[] args) { TypeDemo(); Console.ReadLine(); } ...