• 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#竟然不支持,说不通。

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

  • 相关阅读:
    世纪末的星期
    马虎的算式
    蜜蜂飞舞
    Torry 的困惑
    级数调和
    数列
    最大最小公倍数
    蚂蚁感冒
    12.integer to Roman
    13.Roman to Integer
  • 原文地址:https://www.cnblogs.com/ahdung/p/5167281.html
Copyright © 2020-2023  润新知