摘要:
1、运算符重载:运算符重重载的关键是在对象上不能总是只调用方法或属性,有时还需要做一些其他工作,例如,对数值进行相加、相乘或逻辑操作等。例如,语句if(a==b)。对于类,这个语句在默认状态下会比较引用 a 和 b 。检测这两个引用是否指向内存中的同一个地址,而不是检测两个实例是否包含相同的数据。然 阅读全文
摘要:
1、checked和unchecked 运算符 C#提供了checked 和uncheckde 运算符。如果把一个代码块标记为checked, CLR就会执行溢出检查,如果发生溢出,就抛出overflowException异常。 1 byte b=255; 2 checked 3 { 4 b++; 阅读全文
摘要:
1、数组的初始化 声明了数组后,就必须为数组分配内存,以保存数组的所有元素。数组是引用类型,所以必须给它分配堆上的内存,为此,应使用 new 运算符,指定数组中元素的类型和数量来初始化数组的变量。若使用了为未分配的元素,就会抛出NullReferenceExceptonl 类型的异常。 int my 阅读全文
摘要:
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 阅读全文