zoukankan      html  css  js  c++  java
  • C#5纯属YY的展望

    每次.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"
    }
  • 相关阅读:
    StampedLock
    面试题:final关键字
    VTK 图像处理_显示(vtkImageViewer2 & vtkImageActor)
    VTK 图像处理_创建
    VTK 数据读写_图像数据的读写
    VTK 基本数据结构_如何把几何结构&拓扑结构加入到数据集
    VTK 基本数据结构_数据对象&数据集
    VTK 可视化管道的连接与执行
    VTK 坐标系统及空间变换(窗口-视图分割)
    VTK 三维场景基本要素:相机
  • 原文地址:https://www.cnblogs.com/Ivony/p/2054871.html
Copyright © 2011-2022 走看看