随笔分类 - C#高级编程学习笔记
这是我在学《c#高级编程》第八版时所记录的笔记以及想法,其中夹杂着博客园里面大神的思想和想法。
摘要:1、首先定义一个图书类。专门存放图书的属性信息。 代码如下: 1 //Book.cs 2 3 using System; 4 5 namespace LinqTest 6 { 7 public class Book 8 { 9 public string Name { get; set; } 10
阅读全文
摘要:[TOC] 1、LINQ 函数 1.1、查询结果过滤 :where() Enumerable.Where() 是LINQ 中使用最多的函数,大多数都要针对集合对象进行过滤,因此Where()在LINQ 的操作上处处可见,Where()的主要任务是负责过滤集合中的数据:其原型如下: Where()的参
阅读全文
摘要:从自己的印象笔记里面整理出来,排版欠佳。见谅! 1、LINQ: 语言集成查询(Language Integrated Query) 实例: var q= from c in categories join p in products on c equals p.Category into ps se
阅读全文
摘要:1、MVC的定义: Models: Classes that represent the data of the application and that use validation logic to enforce business rules for that data. Views: Tem
阅读全文
摘要:1.1 引用方法 委托是寻址方法的 .NET 版本。委托是类型安全的类。它定义了返回类型和参数的类型。委托类不仅包含对方法的引用,也可以包含对多个方法的引用。 Lambda 表达式与委托直接相关。当参数是委托类型时,就可以使用Lambda表达式实现委托引用的方法。 1.2委托 当要把 方法 传送给其
阅读全文
摘要: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、虚方法:把一个基类函数声明为 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#中有两个方法可确保变量在使用
阅读全文