语法精读
文章平均质量分 68
龙二少爷
操作系统工程师,项目管理专家。熟悉 C++/C# 等多种语言
展开
-
几个C#的Design by Contract的工具
Microsoft Spec#: http://research.microsoft.com/SpecSharp/C# AL: http://www2.sys-con.com/ITSG/virtualcd/Dotnet/archives/0109/katrib/index.htmlXC#:http://www.resolvecorp.com/default.aspx...2008-03-11 09:43:27 · 104 阅读 · 0 评论 -
初窥Nemerle语言
Nemerle是Microsoft的研究项目之一,由 Wrocław 大学的Kamil Skalski、Michał Moskal、Prof. Leszek Pacholski、Paweł Olszt等人发明. Nemerle是一种多范型的语言(面向对象和函数式),完全支持编译器宏(后来更多的是Lisp的变种,而不是C++),以及许多其他的东西。Nemerla与VS2010里发布的F#不同...2009-06-23 14:23:03 · 139 阅读 · 0 评论 -
C# 语法书 <3> 静态类,别名等等
最近比较忙,所以先跳过第二章委托,先介绍一些林林总总的小更新。[b]静态类[/b]适用范围: C# 2.0以以后版本在C# 2.0之前的版本里,你是无法将一个类声明成静态的。如果我们希望一个类是静态的,也就是希望强制要求这个类中的所有成员都应该为静态的,就无能为力了,唯一能做的就是自己注意将所有的成员声明为static。当我们忘记对一个本应是静态的成员使用stati...2009-06-30 11:32:35 · 290 阅读 · 0 评论 -
C# 语法书 之可选参数
适用C#版本:4.0以后首先给某些语言狂热分子泼点冷水,可选参数的概念来自Visul Basic而不是Ruby。在C# 2.0年代,并没有可选参数这个概念。 这个限制是因为在 C# 中,任何地方都引入面向对象思想,所以尽量使用重载而不是可选参数。[code="C#"]class MsgEcho{ public MsgEcho():this("hi,world") ...2009-12-22 14:40:02 · 935 阅读 · 0 评论 -
用DLR创建自己的语言之一
原文刊登于:http://www.bitwisemag.com/2/DLR-Build-Your-Own-Language,由Ray Linn翻译,如需转载,请站内告知。-------------------------------------------------------------------你曾经为学习一门计算机语言而苦恼么?那好,为啥不丢掉那些C++手册,动手按自己的...2010-01-04 14:35:23 · 319 阅读 · 0 评论 -
.NET 4.0 多任务编程 之二 线程安全的集合
随着多核计算机的普及,并行编程技术,也就是多核编程技术也逐渐称为开发的主流。为此,在.NET 4 中就引入了“并行编程”。在.NET 4 中一些列的Library和类为并行编程提供了支持,如:Task Parallel Library,Parallel LINQ等。在.NET 1.0并行编程技术主要依赖于多线线程技术。多线程最大的问题就是难于使用和管理。在使用多线程的使用,因为它的复杂性,...2010-07-14 13:54:40 · 412 阅读 · 0 评论 -
NET 4.0 多任务编程 之四 Parallel初体验
在.NET Framework 4.0中,在库的层次上,微软提供了大量的新内容来帮助程序员完成应用程序的并行化,其中包括Parallel LINQ,Task Parallel Library和Coordination Data Structures,这些新的类型和类,在System.Threading,System.Threading.Tasks,System.Linq和System.Collec...原创 2010-07-16 14:23:24 · 157 阅读 · 0 评论 -
NET 4.0 多任务编程 之三 改进的线程池
其实从.NET设计之初中就有并行编程技术的一些实现---多线程技术。多线程最大的问题就是难于使用和管理。因为它的复杂性,往往使用我们把注意力分散在如何管理多线程上,而致使我们的最初目的被淡化了。在.NET 4 中就引入了“并行编程”来简化并行计算,虽然.NET 4.0中提出的并行编程的底层机制其实还是基于多线程的。但是他们之前最大的区别就是.NET 4.0中的并行编程更加方便和直观。...2010-07-16 14:58:34 · 252 阅读 · 0 评论 -
【Ray谈C#】乌龟爬之SynchronizationContexts
[b]为什么需要SynchronizationContexts[/b]“乌龟爬”这个奇怪的名字,因为在前面那个演示里,我试图用ironruby或者ironpython去控制一只小乌龟,(就是那个三角箭头),通过ironruby的命令让小乌龟前进、后退、左转、右转。[img]http://dl.iteye.com/upload/attachment/251640/e2ff0d97-a...原创 2010-05-19 15:09:52 · 132 阅读 · 0 评论 -
C# 语法书 <2> 委托 delegate
[b]为什么要有委托?[/b]先看例子,我设计了个MAC水晶按钮,我希望Windows用户都能使用这个漂亮的水晶按钮。不过难题是,我无法设想当用户按下按钮之后会执行什么动作?是弹出对话框,还是执行某个程序? 这些似乎不是按钮设计者能预测到的,但是又必须加以考虑的。一个解决方法是,设计者除了关注处理按钮自身的效果外,还可能需要留个“后门”给其他用户,而其他用户无需触及这个类的内部实现,就可以...2009-06-15 16:40:20 · 71 阅读 · 0 评论 -
C# 语法书 之 <1> 迭代器
这个系列的主要目的是尽量能覆盖C# 1.1之后的语法更新,以便让大家能够熟悉C# 2.0到4.0的语法特性,以提高编程效率,这里我忽略了一些诸如泛型、LINQ等等需要大章节才能阐述清楚的东西,原因是关注这些知识点的文章比比皆是,我所要写的语法都是一些比较小的,容易被人所忽略的地方。如果我有任何遗漏或者错误的地方,请给我个站内消息1. 迭代器 适用范围:c# 2.0之后、C#...2009-06-09 16:42:38 · 108 阅读 · 0 评论 -
C# 利用范型与扩展方法重构代码
在一些C#代码中常常可以看到[code]//An Simple Example By Ray Linnclass CarCollection :ICollection{ IList list; public void Add(Car car) { list.Add(car); } .... funct...2008-04-03 14:58:53 · 95 阅读 · 0 评论 -
C# 4.0中的契约式编程
[b]一切从质量谈起[/b]许多人在考虑软件开发的新方法和新工具时,都是把提高生产率或产量 (productivity)作为主要的期望目标。但是产量不仅直接受益于新的方法途径,也受益于对质量的重视。软件质量的一个主要部分是可靠性(reliability):系统要能够完成所规定的任务( 正确性 -- correctness),也要能够妥善处理异常情况(稳固性 -- robustnes...2009-04-24 11:19:23 · 201 阅读 · 0 评论 -
一切为了并行:MS Axum语言教程 <一>
原文和更新参见:[url="http://blogs.ejb.cc/archives/580"] Ray Linn的EJB.CC[/url]Axum 一个刚刚问世.net家族的新丁,几乎是和这篇文章一样新。它的诞生只为一个目的:一切为了并行。编写并行程序并不容易,首先要将方案切割为许多并行任务(Task)。较为简单的方案,如计算每只股票的年收益率,很容易实施并行,因为任务之间彼此独...2009-05-12 10:47:39 · 296 阅读 · 0 评论 -
一切为了并行:MS Axum语言教程 <二>
[b]代理编程[/b]上面的斐波那契数列的例子只是展示了一个微不足道的构建数据流网的例子。这类网络适合那些“数据流入,数据流出”的场景,但它不能指定数据如何在网络中传播,也不允许不同类型的数据流入或者流出网络。代理与通道给了我们创建复杂数据流网所需的一切。通过通道沟通的两个代理是种弱关系:它不需要知道或关系另一个代理是如何实现的。它们之间的“契约”只由通道指定。借用OOP中...2009-05-12 15:12:14 · 119 阅读 · 0 评论 -
一切为了并行: MS Axum语言教程 <三>
[b]域与状态共享[/b]消息传递是种优秀的沟通机制,但它要消息中的数据必须可以被深拷贝或者不可变。但有时代理间共享数据会让程序更有效率,也更简单,当然,要提供一种安全的方式。这就是设计出域的目的。域存在的目的是允许一组代理安全的共享状态,同时将该状态与其他人等隔离开来。[b]在代理间共享状态[/b]象普通类,域可以包含字段与方法,但更重要的,域定义可以包含代理的定...2009-05-13 14:35:48 · 161 阅读 · 0 评论 -
一切为了并行:MS Axum语言教程 <四>
[b]数据流网编程[/b]在程序中,代理之间通过发送和接受消息彼此沟通,他们的沟通被程序的逻辑,程序的状态,从其他代理接受的数据等等所驱动。与这个控制流模型相提并论的是数据流模型,在此程序的执行只为进入数据流网的数据有效性所驱动,数据在网络中移动的时候,计算同时进行着。在Axum语言中,数据流网由网络操作符所创建。一个网络操作符是个二进制表达式,左边的操作数是源,右边的操作数是目的...2009-05-14 15:12:42 · 171 阅读 · 0 评论 -
What's New in .net 4.0 - 基础类库
1. System.Numerics.BigInteger在C# 4.0的基础类库中,终于有了大数BigInteger,这个大数与其他.net的数值类型不同,它没有最大值和最小值的限制,理论上它可以存无限大的数(取决于你的程序的寻址空间),它与我以前使用的F#的Microsoft.FSharp.Math.BigInt的方法基本一致,但更方便,它可以自动从小数造型成大数,而不需要一再呼叫Fr...2009-06-01 10:34:42 · 86 阅读 · 0 评论 -
What's New in C# 4.0 之一 语法
1. dynamic简介在之前的文章有简单的谈到dynamic,这里更深入的来谈一下一些更实际的应用场景。C# 4.0提供的新的关键字dynamic。对带有dyamic声明的变量的所有操作都将在运行时进行解析。换句话说,你可以对它调用任何方法,编译阶段不会报告任何错误。例如这个方法[code]public static void DoSomethingDynamic(d...2009-06-08 14:54:41 · 118 阅读 · 0 评论 -
【Ray谈C#] MEF 扩展性管理框架
原文发表于:[url="http://blogs.ejb.cc/?p=3"]blogs.ejb.cc[/url][b]MEF是做什么的?[/b]在MEF诞生前,已经存在许多依赖注入框架来解决应用的扩展性问题,比如 EJB、CORBA、Eclipse 的 OSGI 实现以及 Java 端的 Spring 等等。在 Microsoft 的平台上,.NET Framework 自身内部包含组...2010-05-28 16:58:44 · 264 阅读 · 0 评论