上一页 1 ··· 46 47 48 49 50 51 52 53 54 ··· 90 下一页
摘要: 这里有一张单色(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 阅读全文
posted @ 2011-06-11 16:01 董雨 阅读(217) 评论(0) 推荐(1) 编辑
摘要: 迄今为止,使用多内核的多核计算机还并没有得到广泛的应用。尽管在高端领域,高端服务器的世界里,应用着很多多核计算机系统,但在广大的低端世界里,还是使用着单核或双核。但是另一方面,在笔记本电脑的世界里,也出现了多核笔记本。 “尽管多核时代还只是对未来的预测,但不再是空想了。已经一点点地逐步靠近我们这个世界了”。 当然,还有很多单核,单处理器的计算机被利用着,但这并不单纯是C#等开发语言的应用环境。今天,主CPU的内核数量的增加趋势越来越明显,所以我们已经可以预见广大用户使用多核计算机时代的即将到来,同时以此为目标,开始我们现在的程序开发了。 首先,让我们看一下现实情况,因为只使用到双核,所以对内核 阅读全文
posted @ 2011-06-11 16:00 董雨 阅读(257) 评论(0) 推荐(0) 编辑
摘要: ■ 真的活用了内核吗? 对于想确定是不是真正地活用了内核的人,准备了如下的验证程序。这个程序为,把简单循环所花费的时间分两次进行计算。但是,第一次使用传统方法,第二次使用并行方法。验证程序 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+ 阅读全文
posted @ 2011-06-11 16:00 董雨 阅读(182) 评论(0) 推荐(0) 编辑
摘要: ■ dynamic类型与匿名类型 匿名类型是指没有名字,也没有单独定义的类型。严格说来,该类型还是有名字的,只是在C#的源代码中我们看不到这个名字。但是,在4.0版本之前,匿名类型可以被有效利用的范围并不是很大。因为要想在一个方法之外要利用匿名类型并不是不可能的,但是要想在方法之外利用匿名类型,就一定要使用反射。 但是,dynamic类型把这个问题很容易地就给解决了。如果作为dynamic类型来返回,访问它的内容就很简单了。访问使用dynamic类型与匿名类型的对象 using System;class Program{ private static dynamic GetObject() { 阅读全文
posted @ 2011-06-11 15:59 董雨 阅读(315) 评论(0) 推荐(0) 编辑
摘要: ■ 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 阅读全文
posted @ 2011-06-11 15:53 董雨 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 两个问题是:◆写程序时少了智能感知;◆运行程序时速度变慢(反射)。今天看完New features in CSharp 4.docx才恍然明白,趁着没事,把东西整理一下,希望能对暂时还不明白dynamic有什么用的朋友提供一些参考。当然,由于本人才疏学浅,不保证所有的观点都是正确的,希望大家用辩证的眼光来看这篇文章,如有错误之处,请大伙批评指正。言归正传,dynamic关键字用于声明一个动态对象,然后通过该动态对象去调用方法或读写属性。在使用C# 2.0或3.0的时候,如果一个对象需要在运行时才能确定,并且没有接口和基类方面的信息,那我们一般使用反射技术来调用这个未知对像的方法或属性,而C# 阅读全文
posted @ 2011-06-11 14:42 董雨 阅读(352) 评论(0) 推荐(0) 编辑
摘要: <!--[endif]--> .NET 4.0引入了一个新概念,叫动态绑定。所谓绑定,就是对类型、成员和操作的解析过程。动态绑定意味着与编译器无关,而与运行时有关。 <!--[endif]--> 一、 基本概念<!--[endif]-->C# 4.0之前的变量声明,在编译时已经决定其类型,虽然C# 3.0提供了var关键字来声明隐式类型,但用var声明的变量终究逃不过编译器的法眼。用dynamic声明变量的好处是,编译器在编译时并不知道它引用对象的确切类型,而要到运行时才知道。因此,我们可以通过动态绑定在运行时来操作一些类型的属性、方法等(如与IronPyt 阅读全文
posted @ 2011-06-11 14:40 董雨 阅读(384) 评论(0) 推荐(0) 编辑
摘要: 【C#4.0】中的dynamic与var的区别注意:var与dynamic这两个关键字,只是看起来很相 似,仅此而已!var表示“变量的类型是在编译时决定的”,但是dynamic表 示“变量的类型是在运行时决定的”。因此,dynamic与var具有截然不同的含义。var让 你在初始化变量时少输入一些字,编译器会根据右值来推断出变量的类型。dynamic更厉害,它告诉编译器,根本就别理究竟是啥类型,运行 时再推断不迟。var只能用于局部变量的定义,你不能把类的属性定义成 var,也不能把方法的返回值类型或者是参 数类型定义成var。dynamic就没有这些局限了。dynamic类型并没有跳过类型 阅读全文
posted @ 2011-06-11 14:39 董雨 阅读(363) 评论(0) 推荐(0) 编辑
摘要: 在C#2.0中引入了匿名方法,允许在期望出现委托的时候以“内联”的代码替代之。尽管匿名方法提供了函数式编程语言中的很多表达能力,但匿名方法的语法实在是太罗嗦了,并且很不自然。Lambda表达式为书写匿名方法提供了一种更加简单、更加函数化的语法。实际上Lambda表达式的本质是匿名方法,也即是当编译我们的程序代码时,编译器会自动帮我们将Lambda表达式转换为匿名方法。20.5.1创建Lambda表达式Lambda表达式的书写方式是一个参数列表后跟“=>”记号,然后跟一个表达式或一个语句块,即Lambda表达式的语法格式为:参数列=>语句或语句块Lambda表达式例子如下所示:del 阅读全文
posted @ 2011-06-10 16:04 董雨 阅读(190) 评论(0) 推荐(0) 编辑
摘要: C# 3.0新功能• 隐式类型的本地变量和数组• 对象初始值设定项• 集合初始值设定项• 自动实现的属性• 匿名类型• 扩展方法• 分部方法定义• Lambda 表达式隐式类型的数组var a = new[] { 1, 10, 100, 1000 }; // int[]var b= new[] { "hello", null, " world" }; string[] 型的数组使用方括号var c = new[]{new[]{1,2,3,4},new[]{5,6,7,8}};var d = new[]{new[]{"Luca", &q 阅读全文
posted @ 2011-06-10 16:04 董雨 阅读(193) 评论(0) 推荐(0) 编辑
上一页 1 ··· 46 47 48 49 50 51 52 53 54 ··· 90 下一页