DotNET 4.0 新增内容总结(一)

来源:互联网 发布:安卓手表软件 编辑:程序博客网 时间:2024/05/16 01:55

       1. 新的CLR4

       2. 新加的类

       3. 根据契约设计(Design By Contract)

       4. Type Equivalence

1. 新的CLR4

2. 新加的类

    a. BigInteger:System.Numerics.BigInteger.
一个可以代表任意长度整数的类型. 尝试运行这段代码,看两者的差别:
   BigInteger b = BigInteger.Pow(2, 64);

   Console.WriteLine(b.ToString("N"));

   Double d = Math.Pow(2, 64);

   Console.WriteLine(d.ToString("N"));

参考:http://blogs.microsoft.co.il/blogs/pavely/archive/2009/05/26/biginteger-in-net-4-0.aspx

     

     b. Complex, 参看:

http://msdn.microsoft.com/en-us/library/bb738466(VS.100).aspx

 

     c. Tuple, 用来存放不同类型对象的集合,并且,提取对象的时候不需要类型转换,和数组做一个对比.

用数组存储对象:

    object[] o = new object[2]{"Hello",4};

    Console.WriteLine((string)o[0]+" "+(int)o[1]);

用Tuple存储对象:

    Tuple<string, int> t = new Tuple<string, int>("Hello", 4);

    Console.WriteLine(t.Item1+" "+t.Item2);

 

 

Tuple 还有其他有趣的功能,请参看

http://msdn.microsoft.com/en-us/magazine/dd942829.aspx

 

     d. SortedSet, 使用平衡二叉数来保持节点有序,SortedSet<T>实现(implement)ISet<T>接口.

加入SortedSet<T>里的类型要实现 IComparable 接口. 更多请参考:

http://msdn.microsoft.com/en-us/library/dd412070(VS.100).aspx

 

     e. MemoryMappedFiles:System.IO.MemoryMappedFiles.

把硬盘的文件映射到内存里,根据Salvador Patuel 的说法,这个类型能带来两个好处

  •      避免了频繁了IO操作,方便了大文件的处理,尤其在现在这个内存越来越大的时代.
  •   方便多核处理器共享数据.

关于第二点,为多核处理器带来的好处,看下图:

 

具体使用请参看:Salvador Patuel 的一篇博文:

http://blogs.msdn.com/salvapatuel/archive/2009/06/08/working-with-memory-mapped-files-in-net-4.aspx

 

    f. Unified Cancellation Model, 请参看 Parallel Programming with.NET 的一篇文章:

http://blogs.msdn.com/pfxteam/archive/2009/05/22/9635790.aspx

 

3. 根据契约设计(Design By Contract)

 
为什么要根据契约设计?
在运行例子之前,到下面地址下载Code Contract 插件(现在.Net 4.0&VS2010 还在Beta 阶段)
http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx#2
一个比较不错的例子:
http://www.codeproject.com/KB/dotnet/CodeContract.aspx
原文里Contract.Result()>0 应该改为Contract.Result<int>()>0, 完整的测试代码为: 

    using System.Diagnostics.Contracts;

    using System.Diagnostics;

    class Program {

        static void Main(string[] args) {

            SimpleCalculate sc = new SimpleCalculate(4,8);

            Console.WriteLine(sc.Divide());

        }

    }

 

    class SimpleCalculate {

        private int num1;

        private int num2;

 

        public SimpleCalculate(int numberone, int numbertwo) {

            num1 = numberone;

            num2 = numbertwo;

        }

 

        [ContractInvariantMethod]

        protected void ObjectInvariant() {

            Contract.Invariant(this.num2>0);

        }

 

        public int Divide() {

            Contract.Ensures(Contract.Result<int>() > 0);

            if (num2 > 0)

                return num1 / num2;

            return num1;

        }

    }

上文的作者在文章最后提出了一个很有意思的问题,程序中Divide() 方法都还没运行完,Contract 居然就告诉你结果有问题了,相当的有意思。

 

更多关于Code Contract 的信息,请参考:

http://blogs.msdn.com/somasegar/archive/2009/02/23/devlabs-code-contracts-for-net.aspx

 

4. Type Equivalence

.NET 4.0 使得Managed Code 和COM 的交互更加方便,以往的做法简直让人有晕厥的倾向.更多关于 Type Equivalence. 让权威人士 Misha Shneerson 给我们讲一堂课(PDC 的时候,讲到中途有人离场,她很郁闷) 
http://blogs.msdn.com/mshneer/archive/2008/10/28/advances-in-net-type-system-type-equivalence-demo.aspx

 

一个视频Demo - CLR4, Inside Type Equivalence
http://channel9.msdn.com/shows/Going+Deep/Raja-Krishnaswamy-and-Vance-Morrison-CLR-4-Inside-Type-Equivalence/
 
另外一篇相关文章 PDC Day 1: No-PIA, or Type Equivalence and Type Embedding
http://blogs.microsoft.co.il/blogs/sasha/archive/2008/10/29/pdc-day-1-no-pia-or-type-equivalence-and-type-embedding.aspx
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 东西掉成都地铁上怎么办 东西掉在成都地铁上怎么办 成都地铁上掉东西了怎么办 地铁站丢了东西怎么办 在地铁站丢了东西怎么办 没有签劳动合同不发工资怎么办 没有劳动合同辞职不给工资怎么办 地铁安检要交押金怎么办 在广州地铁上人走丢了怎么办 海尔全自动洗衣机程系乱了怎么办 河南危险化学品经营许可证怎么办 甲方不给付监理费怎么办 甲方不按合同付工程款怎么办 撞车对方全责不赔钱怎么办 电梯坏了没人修怎么办 电工超作证丢了怎么办 设计师直接找电梯厂家怎么办 研究生补助申请期限过了怎么办 我的电脑图标没了怎么办 苹果锁频密码忘了怎么办 孕妇被降职降薪怎么办 公司降职降薪员工不同意怎么办 企业因为经营不善要降薪该怎么办 调岗不降薪我该怎么办? 怀孕后强制调岗怎么办 有限公司法人变更后债务怎么办 有限公司法人跑路债务怎么办 网上买票身份信息待核验怎么办 微信买票身份核验失败怎么办 买高铁票待核验怎么办 网上购票身份待核验怎么办 b站稿件版权原因怎么办 已离职老板打电话说账有问题怎么办 开到应急刹车道怎么办 自动挡的车刹车失灵怎么办 自动挡的车如果刹车失灵怎么办 手动挡汽车刹车失灵怎么办 车辆没有年检出了交通事故怎么办 跟着大货车闯了红灯怎么办 在万家金服买的电子产品坏了怎么办 汽车被油笔画了怎么办?