Zhendong Ho

知其然知其所以然

C#各个版本的新特性

C# 7.0 新特性C# 7.0 随 Visual Studio 2017 发布。 数字字面量的改进C# 7 中,数字字面量可以使用下划线来改善可读性、它们称为数字分隔符而被编译器忽略。 int million = 1_000_000; 二进制字面量可以使用0b前缀进行标识。 var b = 0..


C#图解教程之异步编程

什么是异步启动程序时,系统会在内存中创建一个新的进程。进程是构成运行程序的资源的集合。这些资源包括虚地址空间、文件句柄和许多其他程序运行所需的东西。 在进程内部,系统创建了一个称为线程的内核(kernel)对象,它代表了真正执行的程序。一旦进程建立,系统会在Main方法的第一行语句处就开始线程的..


C#图解教程之LINQ

什么是LINQ在关系型数据库系统中,数据被组织放入规范化很好的表中,并且通过简单且强大的SQL语言来进行访问。因为数据在表中遵从某些严格的规则,所以SQL可以和它们很好的配合使用。然而,在程序中却与数据库相反,保存在类对象或结构中的数据差异很大。因此,没有通用的查询语言来从数据结构中获取数据。从..


C#图解教程之枚举器和迭代器

枚举器和可枚举类型我们都知道,可以用foreach语句遍历数组中的元素。但是,为什么数组可以被foreach语句处理呢? 使用foreach语句int[] arr1 = { 10, 11, 12, 13 }; // 定义数组foreach (int item in arr1)..


C#图解教程之泛型

什么是泛型到目前为止,所有在类声明中用到的类型都是特定的类型——或许是程序员定义的,或许是语言或BCL定义的。然而,很多时候,我们需要把类的行为提取或重构出来,使之不仅能应用到它们编码的数据类型上,而且还能应用到其他类型上。 泛型可以做到这一点。我们重构代码并额外增加一个抽象层,对于这样的代码来..


C#图解教程之转换

什么是转换把一个变量(源)的值赋值给另一个变量(目标)。在赋值之前,源的值必须转换成目标类型的值。 例:两个不同类型的变量的赋值。 short var1 = 5;sbyte var2 = 10;var2 = (sbyte)var1; // 强制转换表达式,把var1值转换为sbyte类型 隐..


C#图解教程之接口

什么是接口接口:一组函数成员而未实现的引用类型。只有类和结构能实现接口。 使用接口示例。 // 声明接口interface IInfo{ string GetName(); string GetAge();}// 声明实现了接口的CA类class CA : IIn..


C#图解教程之事件

发布者和订阅者很多程序都有一个共同的需求,既当一个特定的程序事件发生时,程序的其他部分可以得到该事件已经发生的通知。 发布者/订阅者模式(publisher/subscriber pattern)可以满足这种需求: 发布者类定义了事件成员。 订阅者注册在事件成员被触发时要调用的回调方法(事件处..


C#图解教程之委托

什么是委托?委托是持有一个或多个方法的对象。但委托与典型的对象不同,执行委托,就是执行委托对象所“持有”的方法。 注意: 方法的列表称为调用列表。 委托保存的方法可以来自任何类或结构,只要委托的返回类型,委托的签名(包括ref和out修饰符)和方法相匹配。 调用列表中的方法可以是实例方法,也..


数据库开发(七)存储过程、事物、T-SQL编程

外连接左外连接和右外连接当需要把一张表的数据都显示出来的时候,需要用到外连接(左外连接或右外连接)。 左外连接:left join 或 left outer join。 右外连接:right join 或 right outer join。 左表:出现在left join左边的表就叫做左表。 右..