加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在C#中确定方法参数的适当类型?

发布时间:2020-12-15 04:33:51 所属栏目:百科 来源:网络整理
导读:在 Haskell中,我最熟悉的语言,有一种相当精确的方法来确定变量的类型.但是,在学习C#的过程中,我在这方面有点困惑.例如,Array.Sort方法的签名是: public static void Sort( Array array) 但是,如果参数为null,多维或未实现IComparable接口,则此方法将引发异
在 Haskell中,我最熟悉的语言,有一种相当精确的方法来确定变量的类型.但是,在学习C#的过程中,我在这方面有点困惑.例如,Array.Sort方法的签名是:
public static void Sort(
    Array array
)

但是,如果参数为null,多维或未实现IComparable接口,则此方法将引发异常.那么,为什么不是类型IComparable [],如果可能的话?

解决方法

如果今天要写一个方法你会使用这样的东西:
public static void Sort<T>(T[] array)
    where T : IComparable // or even IComparable<T>
{ ... }

这不能强制数组在编译时不为空(遗憾的是),但它可以确保数组具有可比较的类型并且是单维的.空检查仍然需要进行运行时检查.

但这依赖于泛型,在.NET 2.0之前没有添加到语言中. (这也使用方法级泛型,而不是类级泛型,直到.NET 3.5才添加)Array.Sort被添加到.NET 1.0中的语言中.它没有被改变,因为这将是一个突破性的变化,语言设计者选择不做.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读