随笔分类 - C#语法相关
摘要:这节讲一下比较高级的异步编程用法Task,以及两个异步关键字async和await。 Task是在C#5.0推出的语法,它是基于任务的异步编程语法,是对Thread的升级,也提供了很多API,先看一下Task怎么使用: System.Threading.Tasks.Task.Run(() => {
阅读全文
摘要:这节讲一下线程安全的例子,以及如何解决线程安全问题。 上节提到了线程安全的问题,说了一个例子,1000个人抢100张票,这节就从此案例着手,下面先看一下代码实现: private static int tickets = 100; static void Main(string[] args) {
阅读全文
摘要:这节讲一下多线程(Thread)技术。 在讲线程之前,先区分一下程序,进程,线程三者的区别,大体上说,一个程序可以分为多个进程,一个进程至少由一个线程去执行,它们是层层包含的关系。我们写的程序,就是一个进程,多个进程,以完成一个用户服务,或者完成一个大的界面展现,就组成一个程序,但在CPU层面,只有
阅读全文
摘要:这节讲一下:特性(Attribute)。 特性,是用来给代码添加额外信息的一种手段,我们通常是将特性标记到方法,类或者属性上,在使用的这些结构的时候,通过反射(reflection)这一非常高级的技术,获取它们通过特性标记的信息,从而进行某些特殊的处理。 系统也给我们提供了一些特性,比如Serial
阅读全文
摘要:上节讲到了泛型,这节延申一下,讲一下变体。 变体(variance)是协变(convariance)和抗变(也说逆变contravariance)的统称。这个概念在.net 4中引入,在.net 2.0中就可以使用,但是比较麻烦,.net 4将这一概念封装成了特性。 讲变体之前,我们先来复习一下多态
阅读全文
摘要:泛型(Generic),是将不确定的类型预先定义下来的一种C#高级语法,我们在使用一个类,接口或者方法前,不知道用户将来传什么类型,或者我们写的类,接口或方法相同的代码可以服务不同的类型,就可以定义为泛型。这会大大简化我们的代码结构,同时让后期维护变得容易。 泛型很适用于集合,我们常见的泛型集合有:
阅读全文
摘要:这节讲一下C#可空类型(Nullable) 我们知道,值类型在使用前必须设置值,而引用类型则可以是null,但在某些情况下,为值类型设置为空是必要的(如处理数据库数据的时候),微软因此推出了可空类型 System.Nullable<T> 这是一个泛型类,其中,T就代表一个具体的值类型。 在声明和使用
阅读全文
摘要:这节讲一下partial(局部的,部分的)关键字,初学者可能没有接触过这个关键字,但是只要你写过winform或者WPF应用程序的话,那你肯定被动用过这个关键字。首先介绍一下这个关键字的作用,它用作定义一个部分类,也就是说,对于一个类,你可以写在不同的文件中(当然不能超出命名空间的限定),通过par
阅读全文
摘要:一个程序的开发过程中离不开对程序集(Assembly,将程序集打包好,就成为一个.dll的包文件,它也叫动态链接库(Dynamic Link Library))的依赖,在以前ASP.Net时代,微软将所有可能依赖的包都在程序生成中给我们添加上, 所以我们开发时,很少遇到找不到某个类的命名空间的问题
阅读全文
摘要:在正常的函数调用中,一个函数只能返回一个类型的值,但在某些特殊情况下,我们可能需要一个方法返回多个类型的值,除了通过ref,out或者泛型集合可以实现这种需求外,今天,讲一下元组和结构体在这一方面的应用。 元组 元组(Tuple)是一种数据结构,用于存放一组数据,它是值类型的,可读写的,类似于泛型集
阅读全文
摘要:扩展方法是C#3.0引入的新特性,使用它,可以在不修改某一类的代码的情况下,实现该类方法的扩展。 为一个类添加扩展方法,需要三个要素: 1.扩展方法所在的类为静态类 2.扩展方法本身要为静态方法 3.扩展方法的第一个参数要用关键字this,指向要扩展的类 下面请看一个实例: //静态类 public
阅读全文
摘要:这节讲一个C#编程利器:Lambda表达式。 Lambda表达式(Lambda Expression)是C#中一种特殊语法,它的引入,使得匿名方法更加简单易用,最直接的是在方法体内调用代码或者为委托传入方法体的形式与过程变得更加优雅。 Lambda表达式实际上是一种匿名函数,在Lambda表达式中可
阅读全文
摘要:什么是委托? 委托(delegate)是一种托管方法的数据结构,它是一种引用类型,是对方法的引用,如果说int,string等是对数据类型的定义,那么委托就类似于对“方法类型”的定义,声明一个委托,就是声明一种方法签名,和声明的方法签名相同的方法,都可以被委托实例托管。 如何声明一个委托? dele
阅读全文

浙公网安备 33010602011771号