上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 15 下一页
摘要: 1、委托是一个或多个函数指针的抽象,委托是类型安全的、面向对象和安全可靠的2、使用步骤 声明委托public delegate int DelegateClass (string info) 使用new关键字创建委托的一个实例DelegateClass obj1 = new DelegateClass(MethodA) 使用调用运算符()激活一个委托obj1("1")或者显式调用obj1.Invoke("2") 当对象不需要委托的时候,将委托实例设为null3、委托不能作为一个类的数据成员,也不能作为方法中的一个局部变量4、多个函数假如委托时,这些函数根 阅读全文
posted @ 2011-09-13 20:34 常伟华 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 1、运算符重载不能定义新的运算符 垃圾收集程序(GC)负责管理动态内存。因而,new运算符不能在托管代码中被重载 数组运算符在C++中通常被重载,以创建一个安全的数组,这里通常检查栅栏柱错误。C#中,CLR会自动检测栅栏柱错误,从而使重载数组运算符的主要理由不复存在 在C#中,不是像在C++中那样重载赋值运算符,而是实现了IClone接口2、重载operator==和operator!=方法应该调用Equals方法,以保证一致性3、operator|和operator&函数的布尔重载将不执行短路运算,总是要对左、右操作数进行计算4、 阅读全文
posted @ 2011-09-13 13:14 常伟华 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 1、可枚举的类型必须实现IEnumerable和IEnumerator接口2、枚举器实现了IEnumerator接口,它迭代Object类型,会有如下问题 1、值类型的装箱和取消装箱操作降低了性能 2、向下类型转换(从父类型到子类型)到引用类型也要付出少量的性能代价 3、频繁的装箱操作会使托管堆空间紧张 4、大型值类型集合的装箱也会使托管堆空间紧张 5、需要与System.Object之间的类型转换,这并非是类型完全安全的3、迭代器 yield语句 语法:yield return expresssion yield break 迭代器块 迭代器块是维护迭代之间的枚举器的状态... 阅读全文
posted @ 2011-09-13 09:50 常伟华 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 1、和其他语言中的参数化多态相比,区别在于泛型的编译时和运行时的语义。2、泛型与参数化模板的主要区别是后者纯粹是基于编译时。参数化模块的实例在编译时展开为不同的类3、CLR执行泛型类型智能展开4、.NET FCL包含通用的集合类用于普通的数据算法,诸如堆栈、队列、动态数组和字典等,这些集合是基于对象的,其对性能有影响,妨碍了类型安全,而且有可能消耗可用的内存5、参数化集合包含在System.Collections.Generic命名空间中动态数组 List<T>LIFO列表 Stack<T>FIFO列表 Queue<T>键/值对集合 Dictionary&l 阅读全文
posted @ 2011-09-13 08:03 常伟华 阅读(488) 评论(0) 推荐(0) 编辑
摘要: 1、泛型类型 1、类、结构和接口都可以是泛型的。泛型类型有类型形参,它们是以后要完成的占位符。成为泛型不会改变控制类型的基本规则 2、2、约束 1、派生约束:派生约束要求类型实参与指定的类型关联,派生约束是由C#编译器实施的 值类型、密封类、开放式构造类型、基元类型、System.Array、System.Delegate、System.Enum和System.ValueType不能作为约束 2、接口约束:语法等同于派生约束 3、值类型约束:将一个类型形参限制为值类型,基元类型和结构都是值类型。使用struct关键字 4、引用类型约束:将一个类型形参限定为引用类型。引用类型一... 阅读全文
posted @ 2011-09-09 22:51 常伟华 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 1、Cast运算符,拓展方法,接受一个非泛型集合作为输入,并返回一个泛型类型 语法示例:public static IEnumerable<TResult> Enumerable.Cast<TResult>(this IEnumerable source)2、OfType运算符,接受一个非泛型集合,并返回一个非泛型集合。TResult泛型参数的目的是目标类型,其他类型被排除在外,不会被复制到新的泛型集合中 语法:public static IEnumerable<TResult> OfType<TResult>(this IEnumerable 阅读全文
posted @ 2011-09-09 12:44 常伟华 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace ConsoleApplication2 7 { 8 class Program 9 {10 static void Main(string[] args)11 {12 //Level113 try14 { 15 ... 阅读全文
posted @ 2011-09-09 00:05 常伟华 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 1、new修饰符 .NET支持按签名隐藏和按名称隐藏技术。C#只支持按签名隐藏2、派生类不能重写基类中的数据成员或静态成员,但可以使用new修饰符隐藏他们。使用此特征的时候,必须做好充分的代码编档工作3、abstract关键字使一个类是抽象的。抽象类的存在主要是为了继承,不能创建抽象类的实例。非抽象类是具体类,可以创建实体类的实例。静态类,值类型和接口不支持abstract修饰符4、接口的派生类中,实现的函数可以是虚的。派生类的子孙将继承这些已经实现的函数。然而,实现了一个接口的派生类的子孙不能强制转换为该接口类型,只有直接实现一个接口的类型才能强制转换为该接口类型。然后该类的子孙可以通过父. 阅读全文
posted @ 2011-09-05 23:12 常伟华 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 1、命名空间的别名:using A = NamespaceZ.NamespaceY.NamespaceX; using指令不会出现累积现象,而是独立计算的 extern alias AssemblyName ,使用的时候 为AssemblyName::Namespace.MethodName2、Main入口点,如下为四种合法签名: static void Main(){} static int Main() {} static void Main(string[] args) {} static int Main(string[] args) {} Main必须是静态的,而且是私... 阅读全文
posted @ 2011-09-05 13:13 常伟华 阅读(801) 评论(0) 推荐(0) 编辑
摘要: 1、用于存储浏览器的信息的 ASP.NET 数据库并不是真正的数据库,而只是一些带有.browser拓展名的文本文件,位于Web服务器ASP.NET安装目录下,具体路径为:%windows%\Microsoft .NET\[Version]\Config\Browsers,该文件夹中的数据用于返回浏览器的功能2、通过ie:[attribute]=[value];mozilla:[attribute]=[value]给每个空间指定浏览器的解释3、 阅读全文
posted @ 2011-08-27 15:32 常伟华 阅读(148) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 15 下一页