HTML5技术

C#遐想/瞎想 - ahdung

字号+ 作者:H5之家 来源:H5之家 2016-01-29 17:03 我要评论( )

泛型约束更强大。比如支持有参构造函数、枚举、委托: void FooT() where T : new ( string , int ), enum , delegate 空值判断符允许赋值: obj?.Name = ; // obj为null则什么也不做 索引器支持泛型: public T this T[ int i]{ get { return (T)arr[i]; }

  • 泛型约束更强大。比如支持有参构造函数、枚举、委托:

    void Foo<T>() where T : new(string, int), enum, delegate

  • 空值判断符允许赋值:

    obj?.Name = ; //obj为null则什么也不做

  • 索引器支持泛型:

    public T this<T>[int i] { get { return (T)arr[i]; } set { arr[i] = value; } }

  • 支持将var作为参数类型,代表匿名类型,这样方法就可以返回匿名类型,完了同样用var接住返回值,并可以智能提示返回对象的属性,这就要求方法中每个return的匿名类型要一致。目前可以用dynamic代替,但就没了智能提示:

    Create<T1, T2>(T1 arg1, T2 arg2) { return new { Item1 = arg1, Item2 = arg2 }; }

  • 支持内联out。这点其实在c#6.0差一点实现,但最终没如愿,我猜原因是在变量作用域上不好处理:

    , { Use(i); }

  • 支持静态索引器:

    Package { static readonly Dictionary<string, int> _dic; static Package() { _dic = new Dictionary<string, int>(3); _dic.Add(, 0); _dic.Add(, 1); _dic.Add(, 2); } [string name] { get { return _dic[name]; } set { _dic[name] = value; } } } // use example Use(Package[]);

  • 支持编译为本机exe/dll,准确说这个是对编译器的遐想。我倒不是为了性能,而是一为不要运行库,二为别让我们的源码赤裸裸的暴露在.net reflactor之流中。是有个.net native,但仅限商店应用,而且似乎太监了。
  • 暂时就扯这些,有新想法再补上。

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • 码农录歌心得 - ahdung

      码农录歌心得 - ahdung

      2016-04-21 12:00

    网友点评
    r