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

前端之家收集整理的这篇文章主要介绍了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.f2er.com/csharp/94883.html

猜你在找的C#相关文章