微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 为什么List.IndexOf(T)不返回可空的int是否有实际的原因?

方法 List<T>.IndexOf()返回 the zero-based index of the first occurrence of item within the entire List,if found; otherwise,–1.

我正在看到一个平行的事情,而我刚才在Code Complete看到的,这告诉我“避免具有隐含含义的变量”.

For example:
The value in the
variable pageCount might represent the number of pages printed,unless
it equals -1,in which case it indicates that an error has occurred.

嗯,我不知道这个含义是否“隐藏”,因为它的记录足够清楚,但是null似乎比-1表示更好的意义,而.HasValue读取像一个更好的检查比> -1.据我所知,列表和可空类型都在C#2.0中引入,所以我不认为重新调用int的原因与向后兼容性有关.那么,你知道是否有理由,或者这只是一个人忘记实施的东西,现在我们必须永远生活在这错误之中?

解决方法

列表与2.0版本的运行时间一样是可空的T.但是List实现了 IList,它与1.0版本的运行时不兼容,不支持泛型.为了满足IList接口的合同,实现者必须在索引失败时返回-1.代码完整还维护您必须符合您同意的合同,因此List.Indexof必须返回-1.

回答评论

在具有泛型的2.0运行时,已经有数千个针对非通用版本的应用程序.该代码将被允许通过支持通用接口作为非通用接口的扩展来最有效地进行迁移.此外,图像具有相同名称和90%相同用法的类,但是在几种方法完全不同的语义的情况下.

原文地址:https://www.jb51.cc/csharp/94883.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐