惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Blog — PlanetScale
Blog — PlanetScale
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Vercel News
Vercel News
B
Blog
腾讯CDC
P
Proofpoint News Feed
Google DeepMind News
Google DeepMind News
N
Netflix TechBlog - Medium
L
LangChain Blog
F
Fortinet All Blogs
T
The Blog of Author Tim Ferriss
人人都是产品经理
人人都是产品经理
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
I
InfoQ
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
D
DataBreaches.Net
Stack Overflow Blog
Stack Overflow Blog
The Cloudflare Blog
Last Week in AI
Last Week in AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
T
Tailwind CSS Blog

博客园 - Ivony...

扩展 DbUtility (1) DbUtility v3 背后的故事 DbUtility v3 Jumony Core 3,真正的HTML引擎,正式版发布 新项目,WebTest Jumony Core 2.2 发布 尝鲜Jumony for MVC,体验插件化网站开发 用网站(WebSite而不是WebProject)项目构建ASP.NET MVC网站 浅谈ASP.NET网站的编译模型和参数 Jumony for MVC现状和展望 通过源代码研究ASP.NET MVC(八) 通过源代码研究ASP.NET MVC(七) Jumony入门(四)无缝体验 Jumony入门(三)初探解析器 Jumony入门(二)初识选择器 Jumony入门(一)从这里开始 一段自动搜索所有SVN工作目录进行更新的PowerShell脚本 通过源代码研究ASP.NET MVC中的Controller和View(六) 通过源代码研究ASP.NET MVC中的Controller和View(五)
C#5纯属YY的展望
Ivony... · 2011-05-23 · via 博客园 - Ivony...

2011-05-23 23:27  Ivony...  阅读(3890)  评论()    收藏  举报

每次.NET出现新版本后,都会有大量对下个版本不靠谱的各种YY。尤其是C#,一些YY会从3开始,直到5。在这里我也不妨YY一下,谈谈我期盼了很久的一些语言特性,我尽可能会让这些YY靠谱一点,各位看官姑妄听之,姑妄看之。

1、namespace语句:

namespace Ivony;

令整个文件所有根定义,均在Ivony命名空间。

虽然很无聊,但是的确可以减少花括号的层次。

2、lambda语句块:

Expression<Action<int>> e = max =>
{
  for( int i = 0; i < max; i++ )
    Console.WriteLine( i );
};

这个据说没赶上车

3、泛型约束支持更丰富类型:

public class EnumHelper<T> where T : Enum
{
  //…
}

这个在C#4仍然是不支持的。

4、自定义dynamic的类型转换:

public static dynamic operator implict ( MyType obj )
{
  //...
}

C#小组是不是忘了这个重要的特性。

5、用简单的语法获取MemberInfo:

var member = memberof( obj.ToString );

获取一个MethodInfo对象。

6、自动推断委托类型:

var e = ( int i ) => i + 5;
var d = delegate( int i ) { return i + 5; };

e是一个Expression<Func<int, int>>对象,d是一个Func<int,int>对象。

这个可能C#团队永远不会实现。

7、自定义类型初始化表达式行为:

我简单的说说,不给出代码了。

通过特性,设置类型的一个属性是否应当出现在类型初始化表达式中,也就是说new MyType(){ A = 1 };,通过特性可以使得A不能在出现在花括号中。

或者,使得{ A = 1 }编译为obj.Add( "A", 1 )。

或者,使得非内置列表类型可以写出:new MyType(){ "a", "b" };

8、对匿名类型属性应用特性:

var obj = new
{
  [DisplayName( "姓名" )]
  Name = "abc"
}