当前位置:  开发笔记 > 编程语言 > 正文

C#4.0的新酷特性

如何解决《C#4.0的新酷特性》经验,为你挑选了4个好方法。

你们正在寻找的最酷的新功能是什么,或者你听说过在c#4.0中发布的最新功能.



1> Jon Skeet..:

如果你需要动态的东西听起来很酷,但我不希望经常使用它.

委托和接口的通用方差是相似的 - 目前缺乏方差是一个令人头痛的问题,但很多地方很难解决C#4中可用的有限差异.

COM功能对我并不特别感兴趣 - 我真的应该对它们的功能有所了解.

构建不可变类型时,可选参数和命名参数可能会产生很大的不同:它启用如下语法:

Person p = new Person (name: "Jon", age: 32);

没有庞大的构造函数重载组合.我更喜欢以readonly自动实现的属性的形式编写不可变类型的更多支持,但我不希望我们会得到那些.(目前他们肯定不在拟议的功能列表中.)

我个人实际上对.NET 4.0 的一些框架功能更感兴趣- 特别是代码契约和并行扩展.


要添加此示例,请参阅:http://marcgravell.blogspot.com/2008/11/immutability-and-optional-parameters.html
代码合约+ 1
命名参数也使得布尔参数更加清晰.你想看到'True'或'UseWidget:True'吗?

2> CMS..:

方法参数默认值:

public void MyMethod1(string value1 = "test", int num1 = 10, double num2 = 12.2)
{
  //...
}

也许匿名返回类型:

public var MyMethod2()
{
  // ..
}



3> Bryan Watts..:

IDynamicObject,后面的胶水dynamic,允许在运行时解释一个调用.

这对于固有的无类型场景很有意义,例如REST,XML,COM DataSet,动态语言等等.它是在动态语言运行时(DLR)之上构建的动态分派的实现.

相反繁琐反射语义的,你点到声明为变量dynamic.想象一下使用Silverlight中的Javascript对象:

dynamic obj = GetScriptObject();

HtmlPage.Window.Alert(obj.someProperty);

支持所有C#语法(我相信):

HtmlPage.Window.Alert(obj.someMethod() + obj.items[0]);

反思本身看起来更清洁:

public void WriteSomePropertyValue(object target)
{
    Console.WriteLine((target as dynamic).SomeProperty);
}

public void WriteSomeMethodValue(object target, int arg1, string arg2)
{
    Console.WriteLine((target as dynamic).SomeMethod(arg1, arg2));
}

dynamic是工具包中的另一个工具.它不会改变静态与动态的争论,只是简化了摩擦.


神圣的废话....没想过将物体投射到动态.这样可以让反射更轻松!

4> James L..:

元组

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有