zoukankan      html  css  js  c++  java
  • C#遐想/瞎想

    1. 泛型约束更强大。比如支持有参构造函数、枚举、委托:
      void Foo<T>() where T : new(string, int), enum, delegate
    2. 空值判断符允许对属性/字段赋值:
      obj?.Name = "sdf"; //obj为null则什么也不做
    3. 索引器支持泛型:
      public T this<T>[int i]
      {
          get { return (T)arr[i]; } 
          set { arr[i] = value; }
      }
    4. 支持将var作为参数类型,代表匿名类型,这样方法就可以返回匿名类型,完了同样用var接住返回值,并可以智能提示返回对象的属性,这就要求方法中每个return的匿名类型要一致。目前可以用dynamic代替,但就没了智能提示:
      public static var Create<T1, T2>(T1 arg1, T2 arg2)
      {
          return new { Item1 = arg1, Item2 = arg2 };
      }
    5. 支持内联out。这点其实在c#6.0差一点实现,但最终没如愿,我猜原因是在变量作用域上不好处理:
      if (int.TryParse("3", out int i)) //结合类型推断,甚至连int都允许省略
      {
          Use(i);
      }
    6. 支持静态索引器:
      public static class Package
      {
          static readonly Dictionary<string, int> _dic;
      
          static Package()
          {
              _dic = new Dictionary<string, int>(3);
              _dic.Add("a", 0);
              _dic.Add("b", 1);
              _dic.Add("c", 2);
          }
      
          public static int this[string name]
          {
              get { return _dic[name]; }
              set { _dic[name] = value; }
          }
      }
      
      // use example
      Use(Package["b"]);
    7. 支持编译为本机exe/dll,准确说这个是对编译器的遐想。我倒不是为了性能,而是一为不要运行库,二为别让我们的源码赤裸裸的暴露在.net reflactor之流中。是有个.net native,但仅限商店应用,而且似乎太监了。
    8. 支持do-until循环句式,只有do-while不幸福。VB、Powershell这些小伙伴都支持,以语法见长的C#竟然不支持,说不通。

    暂时就扯这些,有新想法再补上。

  • 相关阅读:
    Delphi泛型系列(很不错)[转静候良机]
    数组的排序
    数据存储到流几种形式(数据流 TStream)
    [转]Delphi TStream详解
    Delphi匿名方法[转 静候良机]
    神一样的崇拜这个女人...打破了我对我们苦b程序员极限的了解
    sql server cte语法
    GdiPlus[49]: 图像(一) 概览
    GdiPlus[51]: 图像(三) 关于呈现
    GdiPlus[47]: IGPMatrix 矩阵(二)
  • 原文地址:https://www.cnblogs.com/ahdung/p/5167281.html
Copyright © 2011-2022 走看看