zoukankan      html  css  js  c++  java
  • 对 C# 未来的期望

    接触 C# 一年,总体上是一个非常完善的语言,但是某些细节特征还是不够完美。这里记下我现在对它将来的一些期望。

     
     
     
    更强大的泛型约束
     
    与 C++ 的模板相似,C# 的泛型使得编写适用于多种类型的代码更加简洁。如果没有泛型,我们可能需要使用 object 并执行类型转换,或者针对每一种类型写大量雷同的代码。在泛型类型约束上,C# 一如既往的严格,但是由于泛型约束还不完善,有时不得不写一些重复的代码。比如下面这个例子:
     
        public static T Max<T>(T a, T b) where T is int or long or float or double
        {
            return a >= b ? a : b;
        }
    可惜现在的 C# 还没有这个功能......System.Math 的做法就是为各种类型分别写一个 Max 方法。
    关于C#的泛型约束参考这里:类型参数的约束,模板与泛型的区别:C++ 模板和 C# 泛型之间的区别。
     
     
     
    命名空间范围的访问修饰
     
    C# 提供了 internal 访问修饰符来保护程序集内部类型或成员,但是实际开发中我们经常也需要在一个程序集中划分子模块。为了更清楚的把同一个子模块内部的类之间公开的内容与不同的子模块之间公开的内容区别开,希望未来 C# 可以提供命名空间范围的访问修饰。比如下面这个例子:
     
    复制代码
    namespace Moudle
    {
     public class Common { ... }
     
     private class Secret { ... }
    }
    复制代码
    添加 private 类型的访问修饰,这样 Common 可以访问 Secret, Secret 类型在 Moudle 命名空间可见,对 Moudle 之外是不可见的。注意,现在的 C# 不允许命名空间元素声明为 private 或 protected。C++ 中的友元也可以解决这个问题,但是我猜你们都不喜欢 friend。。。
    使用内部类可以一定程度上解决这个问题,但是太不自由了。在 Unity 开发中这个问题更严重,因为脚本组件必须写在单独的文件、且不可以为内部类。
  • 相关阅读:
    c3p0整合mysql报错问题
    MySQL错误问题
    导入项目@Override报错原因及解决办法
    AtomicInteger线程安全的计数器
    jq实现鼠标经过出现上拉菜单
    css实现文字裁切效果
    echarts地图
    css3实现 鼠标经过li时动态画边框(jq库导航)
    仿妙味课堂导航(转)
    jq仿 妙味课堂导航01
  • 原文地址:https://www.cnblogs.com/gc2013/p/4154656.html
Copyright © 2011-2022 走看看