01 2015 档案
摘要:线程函数要么没有参数,要么只能有一个object参数,而且均没有返回值,这样就大大降低了程序的灵活性,其实我们想要的是能像普通方法一样正常使用参数和返回值!能不能实现这个需求呢?下面就介绍两种方法 一、添加外壳方法 原理:把参数传递变成了对变量的调用 方法:定义一个专门的线程类。 1、需要向线程传递
阅读全文
摘要:多线程概述 什么是进程? 当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的。 什么是线程? 线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。 什
阅读全文
摘要:一、概述 1、什么是异步? 异步操作通常用于执行完成时间可能较长的任务,如打开大文件、连接远程计算机或查询数据库。异步操作在主应用程序线程以外的线程中执行。应用程序调用方法异步执行某个操作时,应用程序可在异步方法执行其任务时继续执行其他的任务。 2、同步与异步的区别 同步(Synchronous):
阅读全文
摘要:在C#的世界里,委托是无处不在,尤其在.NET自己封装的框架里到处都有其身影,所以掌握委托就很有必要了!那什么是委托呢?其实委托就是一种数据类型,跟int等东东差不多,只不过在使用时要自己先去构建一个委托数据类型(不像int微软已为你准备好),然后声明一个委托类型的变量,并为其赋值,赋值的对象只能是
阅读全文
摘要:一、表达式树入门 Lambda表达式树很复杂,从概念上很难理解清楚,一句话,表达式树是一种数据结构!这里我们通过下面的这个例子来理解一下表达式树,你就能看个大概: lambda表达式树动态创建方法 以上代码构成的Lambda表达式树如下图: 二、常见的一些表达式树用法 ConstantExpress
阅读全文
摘要:一、概述 Attribute说白了就是一个类而已,里边一般含有一些附加信息,或者一些特殊的处理逻辑,以便告诉编译器应用该特性的东东是个奇葩,需要特殊对待! 二、使用时的注意事项 2.1. Attribute是一个类,必须继承自System.Attribute 2.2 Attribute命名规范Att
阅读全文
摘要:反射虽然有时很有必要,但是应用反射的代码大多“复杂难懂”、“性能不高”,因此我们可以找寻在一些场景下替换反射的方法。此处也只是一些栗子,更多巧妙的应用还是自己以后亲自查查~ 先来看看一个使用普通反射完成的简单Demo:首先创建一个Person类,这个类非常简单,一个Name的public属性,一个_
阅读全文
摘要:先来一段有用的反射代码 namespace Calculator { public interface Iwel { String Print(); } } namespace Calculator { public class Arithmetic:Iwel { /// <summary> ///
阅读全文