C#遐想/瞎想

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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接住返回值,并可以智能提示返回对象的属性。目前可以用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"]);

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

以上是关于C#遐想/瞎想的主要内容,如果未能解决你的问题,请参考以下文章

c#代码片段快速构建代码

此 Canon SDK C++ 代码片段的等效 C# 代码是啥?

是否可以动态编译和执行 C# 代码片段?

C#常用代码片段备忘

优化 C# 代码片段、ObservableCollection 和 AddRange

VS2015使用技巧 打开代码片段C#部分