摘要:
这里有一张单色(2值)的PNG的图片(1024*1024)。因为是单色,所以只有黑跟白两个值(实际上使用了只有黑跟白两色的8位PNG格式的图片文件)。到底,哪些像素是黑色的,我们编写一个程序来查点一下。同时用它来进行单任务和2~4任务分别进行查点时性能的比较。比较单任务与多任务 using System;using System.Collections.Generic;using System.Drawing;using System.Linq;using System.Threading.Tasks;class Program{ public static IEnumerable<Co 阅读全文
摘要:
迄今为止,使用多内核的多核计算机还并没有得到广泛的应用。尽管在高端领域,高端服务器的世界里,应用着很多多核计算机系统,但在广大的低端世界里,还是使用着单核或双核。但是另一方面,在笔记本电脑的世界里,也出现了多核笔记本。 “尽管多核时代还只是对未来的预测,但不再是空想了。已经一点点地逐步靠近我们这个世界了”。 当然,还有很多单核,单处理器的计算机被利用着,但这并不单纯是C#等开发语言的应用环境。今天,主CPU的内核数量的增加趋势越来越明显,所以我们已经可以预见广大用户使用多核计算机时代的即将到来,同时以此为目标,开始我们现在的程序开发了。 首先,让我们看一下现实情况,因为只使用到双核,所以对内核 阅读全文
摘要:
■ 真的活用了内核吗? 对于想确定是不是真正地活用了内核的人,准备了如下的验证程序。这个程序为,把简单循环所花费的时间分两次进行计算。但是,第一次使用传统方法,第二次使用并行方法。验证程序 using System;using System.Threading.Tasks;class Program{ private const int count = 1000000000; private static void taro() { Console.WriteLine("Taro is busy now"); for (int i = 0; i < count; i+ 阅读全文
摘要:
■ dynamic类型与匿名类型 匿名类型是指没有名字,也没有单独定义的类型。严格说来,该类型还是有名字的,只是在C#的源代码中我们看不到这个名字。但是,在4.0版本之前,匿名类型可以被有效利用的范围并不是很大。因为要想在一个方法之外要利用匿名类型并不是不可能的,但是要想在方法之外利用匿名类型,就一定要使用反射。 但是,dynamic类型把这个问题很容易地就给解决了。如果作为dynamic类型来返回,访问它的内容就很简单了。访问使用dynamic类型与匿名类型的对象 using System;class Program{ private static dynamic GetObject() { 阅读全文
摘要:
■ dynamic类型 C#从1.0版开始,就可以即使不知道一个对象的类型,在编译时也可以动态访问这个对象的信息。只要使用反射就可以了。使用反射访问对象的成员信息 class A{ public readonly string MyName = "陆凌牛"; public static object GetObjectA() { return new A(); }}class Program{ static void Main(string[] args) { object a = A.GetObjectA(); var name = a.GetType().GetFiel 阅读全文
摘要:
两个问题是:◆写程序时少了智能感知;◆运行程序时速度变慢(反射)。今天看完New features in CSharp 4.docx才恍然明白,趁着没事,把东西整理一下,希望能对暂时还不明白dynamic有什么用的朋友提供一些参考。当然,由于本人才疏学浅,不保证所有的观点都是正确的,希望大家用辩证的眼光来看这篇文章,如有错误之处,请大伙批评指正。言归正传,dynamic关键字用于声明一个动态对象,然后通过该动态对象去调用方法或读写属性。在使用C# 2.0或3.0的时候,如果一个对象需要在运行时才能确定,并且没有接口和基类方面的信息,那我们一般使用反射技术来调用这个未知对像的方法或属性,而C# 阅读全文
摘要:
<!--[endif]--> .NET 4.0引入了一个新概念,叫动态绑定。所谓绑定,就是对类型、成员和操作的解析过程。动态绑定意味着与编译器无关,而与运行时有关。 <!--[endif]--> 一、 基本概念<!--[endif]-->C# 4.0之前的变量声明,在编译时已经决定其类型,虽然C# 3.0提供了var关键字来声明隐式类型,但用var声明的变量终究逃不过编译器的法眼。用dynamic声明变量的好处是,编译器在编译时并不知道它引用对象的确切类型,而要到运行时才知道。因此,我们可以通过动态绑定在运行时来操作一些类型的属性、方法等(如与IronPyt 阅读全文
摘要:
【C#4.0】中的dynamic与var的区别注意:var与dynamic这两个关键字,只是看起来很相 似,仅此而已!var表示“变量的类型是在编译时决定的”,但是dynamic表 示“变量的类型是在运行时决定的”。因此,dynamic与var具有截然不同的含义。var让 你在初始化变量时少输入一些字,编译器会根据右值来推断出变量的类型。dynamic更厉害,它告诉编译器,根本就别理究竟是啥类型,运行 时再推断不迟。var只能用于局部变量的定义,你不能把类的属性定义成 var,也不能把方法的返回值类型或者是参 数类型定义成var。dynamic就没有这些局限了。dynamic类型并没有跳过类型 阅读全文