随笔分类 -  C#

摘要:有的编程语言允许一个类型定义操作符应该如何操作类型的实例,比如string类型和int类型都重载了(==)和(+)等操作符,当编译器发现两个int类型的实例使用+操作符的时候,编译器会生成把两个整数加到一起的代码。 当编译器发现两个string类型的实例使用+操作符的时候,编译器会生成把两个字符串连接到一起的代码。那么编译器怎么就会知道这样做呢?如何进行操作符重载呢? 阅读全文
posted @ 2015-01-16 18:27 Aseven 阅读(5595) 评论(0) 推荐(1) 编辑
摘要:类型构造器究竟什么时候调用?不同的调用时机又会产生怎样的效果呢?有什么性能问题呢?这是我们讨论的重点。Artech的 关于Type Initializer和 BeforeFieldInit的问题,看看大家能否给出正确的解释 这篇文章中提到的问题可以很好的测试你是否对类型构造器有足够的理解。 阅读全文
posted @ 2015-01-14 15:44 Aseven 阅读(3435) 评论(1) 推荐(1) 编辑
摘要:C#中调用静态方法、非虚实例方法和虚实例方法的过程和区别。 阅读全文
posted @ 2014-12-21 14:56 Aseven 阅读(2107) 评论(0) 推荐(1) 编辑
摘要:所谓单例(Singleton)就是在应用程序运行期间,某个类型对外公布的实例始终是同一个,同一个的意思并不是说相等的,而是相同的,我们可以利用object的一个静态方法object.ReferenceEquals(而非object.Equals)来测试单例。 1、首先,该Singleton的构造函数必须是私有的,以保证客户程序不会通过new()操作产生一个实例,达到实现单例的目的。 2、其次,尽可能的把单例的类用sealed关键字修饰,防止类被继承。 2、因为静态变量的生命周期跟整个应用程序的生命周期是一样的,所以可以定义一个私有的静态全局变量instance来保存该类的唯一实例; 3、必须提供一个全局函数或者静态属性访问获得该实例,并且在该函数或者属性内部提供控制实例数量的功能,即通过if语句判断instance是否已被实例化,如果没有则用new()创建一个实例;否则,直接向客户返回一个实例。 阅读全文
posted @ 2014-12-20 16:11 Aseven 阅读(1279) 评论(0) 推荐(0) 编辑
摘要:进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。1.计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2.假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背后的含义就是,单个CPU一次只能运行一个任务。3.进程就好比工厂的车间,它代表CPU所能处理的单个任务。任一时刻,CPU总是运行一个进程,其他进程处于非运行状态。4.一个车间里,可以有很多工人。他们协同完成一个任务。5.线程就好比车间里的工人。一个进程可 阅读全文
posted @ 2013-06-01 08:32 Aseven 阅读(795) 评论(5) 推荐(6) 编辑