文档Compare(T? x, T? y)说:
\n\n返回:
\n
\n一个有符号整数,表示 x 和 y 的相对值
\n小于零 \xe2\x80\x93 x 小于 y。
\n零 \xe2\x80\x93 x 等于 y。
\n大于零 \xe2\x80\x93 x 大于 y。
考虑这个例子:
\nusing System;\nusing System.Collections.Generic;\n \npublic class Program\n{\n public static void Main()\n {\n Console.WriteLine(Comparer<int?>.Default.Compare(null, 1)); // -1 ?huh?\n Console.WriteLine(Comparer<int?>.Default.Compare(-1, 1)); // -1\n Console.WriteLine(Comparer<int?>.Default.Compare(1, 1)); // 0\n Console.WriteLine(Comparer<int?>.Default.Compare(2, 1)); // 1\n \n Console.WriteLine((int?)null < 1); // False\n Console.WriteLine((int?)null == 1); // False\n }\n}\nRun Code Online (Sandbox Code Playgroud)\nnull“小于”某个值也是如此。-2如果它返回一个不同的幻数(例如),或者抛出异常,或者其他什么,我不会感到惊讶。
正如预期的那样,并且null < 1是错误的,这似乎与上述相反。
这是否有什么原因,或者只是一个需要注意的 API 怪癖?
\n| 归档时间: |
|
| 查看次数: |
496 次 |
| 最近记录: |