09 2016 档案
摘要:1、协变和抗变 泛型接口的协变 如果泛型类型用 out 关键字标注,泛型接口就是协变的。这也意味着返回类型只能是 T。 接口IIndex 与类型T 是协变的,并从一个制度索引器中返回这个类型。 1 public interface IIndex<out T> 2 { 3 T this[int ind
阅读全文
摘要:1、泛型类的功能:在创建泛型类时,还需要一些其他C#关键字。例如,不能把null赋予泛型类型。此时,可以使用default 关键字。如果泛型类型不需要Object类的功能,但需要调用泛型类上的某特定方法,就可以定义约束。 具体讨论以下: 默认值 约束 继承 静态成员 例:下面是一个使用 泛型文档管理
阅读全文
摘要:【重点】泛型:有了泛型,就可以创建独立于被包含类型的类和方法了。我们不必给不同的类型编写功能相同的许多方法和类,只创建一个方法或类即可,以下是泛型的特点:性能、类型安全性、二进制代码重用、代码的扩展、命名约定 1、性能:空间的泛型和非泛型集合类 System.Collections 和 System
阅读全文
摘要:Delegate [重中之重] 委托 定义一:(参考)http://www.cnblogs.com/zhangchenliang/archive/2012/09/19/2694430.html 完全可以把delegate理解成C中的函数指针。 它允许你传递一个 类A 的 方法m 给另一个 类B 的对
阅读全文
摘要:1、定义和实现接口:接口名称通常上以字母 I 开头 例子:定义IBankAccount接口 下面是一个实现了 IBankAccount 接口的类 SaverAccount 派生自IBankAccount ,表示它获得了IBankAccount 的所有成员,但接口实际上并不实现其方法,所以SaverA
阅读全文
摘要:例:假设一个账户密码的输入在数据库中是这样进行判断的。 如果输入: 因为 ‘1’=‘1’ 永远返回的是true 所以 这就造成了SQL 的注入漏洞。 解决办法: ①:过滤敏感字符 ②使用参数化 SQL语句(推荐)
阅读全文
摘要:SQL调优。 1、索引是数据库调优的最根本的优化方法。聚簇索引、非聚簇索引。 聚簇索引:物理序与索引顺序相同。(只能有一个) 非聚簇索引:物理顺序与索引顺序不相同。 2、调整WHERE 子句中的连接顺序。 DBMS 一般采用自下而上的顺序解析WHERE 子句,根据这个原理,表连接最好写在其他WHER
阅读全文
摘要:1、T-SQL中各子句在逻辑上按照以下顺序进行处理 查询实例: 2、WHERE 阶段只返回让逻辑表达式为TRUE的那些行,不过。要时刻记住 T-SQL 使用的是 三值谓词逻辑 ,所以逻辑表达式的结果可以为 TRUE, FALSE, UNKNOWN。在三值逻辑中,“返回TRUE" 与 ”不返回FALS
阅读全文
摘要:这是算法中较为基础的一个算法, 其原理 与打牌时候的摸牌类似,我们把一堆牌不看摸好了上来, 接下来我们要对我们的牌进行处理,那我们一般的方法就是 比如 这张牌 先 看它前面的是否有比他大的,如果有的,我们就插到 那张牌的前面。 在计算机语言里面,我们可以模拟成一个数组,进行插入排序,当前 " 牌 "
阅读全文
摘要:1、虚方法:把一个基类函数声明为 virtual,就可以在任何派生类中重写该函数。 2、在Java 中所有函数都是虚拟的,但是在C# 中,C# 要求在派生类的函数重写另一个函数时,要使用 override 关键字显式声明。 3、成员字段和静态函数都不能声明为 virtual ,因为这个概念只对类中的
阅读全文
摘要:1、构造函数: 实例构造函数(只要创建了对象,就会执行)一般使用 this 关键字区分成员字段和同名的参数。可以把构造函数定义为private 或 protected 。这样不相关的类也不能访问他们。 下面这个例子没有为MyTest 定义任何公有的或受保护的构造函数。这就使MyTest不能使用new
阅读全文
摘要:1、C# 中的命名空间 namespace,我觉得和Java中的package 差不多,相当于一个"包" 一样。 2、修饰符 static 修饰方法表示方法不能在类的实例化上执行,因此不必先实例化再调用。 3、变量的初始化,C#中编译器需要用初始值对变量进行初始化。 C#中有两个方法可确保变量在使用
阅读全文