摘要: 学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2218227.html区别:抽象类中的抽象方法和标记为 Virtual、Override 的方法的区别:1.抽象类中的抽象方法必须强制要求在其所有非抽象的子类中一定要有其对应的 override 实现;而被标识为 virtual 的虚方法在其所在类的子类中可以 override,也可以不 override,不会强制要求。2.抽象类中的抽象方法必须要求不能有任何实现,而被标识为 virtual 的虚方法必须要有自己的实现,就算是“空实现”(即只有一对大括 阅读全文
posted @ 2011-10-12 23:47 梁国锦 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2214013.html区别:程序员自行用代码方式实现的回收和 GC 方式的回收的区别:前者(代码方式)回收效率高,有针对性,但一旦程序员忘了实现回收代码,会出现不可预期的错误,安全性不高;而后者(GC 方式)能在一定程度上解放了程序员的精力,可以不用总是要顾虑着内存的回收,但回收效率比不上代码方式的回收,GC 的回收不是实时的回收,回收的时机是由 GC 的内部算法决定的。注意:这里说的垃圾回收(GC)主要是对对象占用的堆(托管堆)中的内存资源来说的,非 阅读全文
posted @ 2011-10-12 23:46 梁国锦 阅读(337) 评论(0) 推荐(0) 编辑
摘要: 学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2214011.html易错:表达式"^\d{15}$|^\d{18}$"和表达式"^(\d{15}|\d{18})$"效果一样,但这两个表达式和"^\d{15}|\d{18}$"不一样,前两者都表示有15位或18位数字组成的字符串,而后者则表示以15位数字开头或者以18位数字结尾的字符串,只要字符串开始前15位全是数字或者最后18位全是数字则符合要求,例如:"123456789012 阅读全文
posted @ 2011-10-12 23:42 梁国锦 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2214010.html细节:ICollection 接口也是继承自 IEnumerable 接口的,因此 IEnumerable 在多态的使用上能表示的范围更大。技巧:在 Dictionary<K, V> 中,如果 Key 的值不是有规律的数值类型(例如 Key 为字符串类型值)时,可以通过“foreach(string key in Dict.Keys)”的方式来进行逐个遍历,然后通过被遍历出的每个Key来查找出 Dict 中 Key 对 阅读全文
posted @ 2011-10-12 23:41 梁国锦 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2214009.html细节:数组一旦声明了之后长度就是固定了的,不能在使用时再对数组的长度进行修改。而 ArrayList 则相当于是动态长度的数组,随时需要随时添加。细节:ArrayList 的对象(暂设定为list)的 ToArray() 方法返回的是和该 list 对象中的元素个数和值都相同的一个 object 类型数组,list 对象里面的每个元素都拷贝一份,然后赋给要返回回来的新 object 数组中,而不是直接把 list 对象中的所有元素 阅读全文
posted @ 2011-10-12 23:39 梁国锦 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2214008.html细节:若要在强类型 DataSet 中添加含有“Where Name Like '%@Name%'”等这种带“模糊匹配”通配符的参数是不能直接这样添加的,这里传进 DataSet 中的 SqlCommand 还是按一般的传入参数的方法,即应该还是像往常一样写成“Where Name Like @Name”,然后在写 C# 代码调用该强类型 DataSet 对应的 Adapter 来执行查询之前,先把待传入查询方法的 阅读全文
posted @ 2011-10-12 23:35 梁国锦 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2214007.html小结:SqlDataAdapter 相当于 DataSet 和数据库之间沟通的桥梁,无论是从数据库中取数据、把数据 Update 到数据库等,都需要用到 SqlDadaAdapter。例如以下这段代码:1 DataSet dataSet = new DataSet();2 SqlDataAdapter adapter = new SqlDataAdapter(cmd);3 adapter.Fill(dataSet);4 ..... 阅读全文
posted @ 2011-10-12 23:31 梁国锦 阅读(404) 评论(0) 推荐(0) 编辑
摘要: 学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2213782.html注意:并不是所有情况下的字符串拼接方式为SQL语句添加参数都会造成字符串注入漏洞攻击的,例如下面的例子:string s = Console.ReadLine();int age = Convert.ToInt32(s);cmd.CommandText = "select * From T_Persons where Fage = "+ age;此时由于变量“age”是被限定了 int 类型,这样的话该变量的值 阅读全文
posted @ 2011-10-12 23:29 梁国锦 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2213504.html细节:string id = reader.GetInt32(reader.GetOrdinal("id")).ToString();//由于该Id字段在数据库中的类型为int,因此在C#中通过 SqlDataReader 实例提取出来时不能用 GetString() 方法,而应该用 GetInt32() 方法,否则报错。string name = reader.GetString(reader.GetOrdi 阅读全文
posted @ 2011-10-12 23:23 梁国锦 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 学习交流,欢迎转载。转载请注明文章来源:http://www.cnblogs.com/lgjspace/archive/2011/10/12/2213018.html细节:业务主键和逻辑主键的区别:业务主键是使用有业务意义的字段做主键,如身份证号、银行账号等;而逻辑主键则是使用没有任何业务意义的字段作为主键,如流水号等;由于很难保证业务主键不会出现重复,所以一般都推荐用逻辑主键。经验:当一个表的某些字段的值出现多次重复时,就应该考虑创建多个表,使用外键来进行表间关联,这样能有效减少数据的重复和冗余。提示:如果只想在 VisualStudio 中管理和开发数据库,只需要安装 VisualStud 阅读全文
posted @ 2011-10-12 23:18 梁国锦 阅读(262) 评论(0) 推荐(0) 编辑