如何解决C#中short的CompareTo方法
我想在C#中使用instantiateViewController(withIdentifier:)
方法。当我将其与with q as
(
SELECT [numbers],[product_ID],cast(a.numbers as float) / coalesce(b.numbers,null) ratio
FROM [tablename] a
CROSS JOIN [tablename] b
)
select *
from q
where ratio = cast(ratio as bigint)
and ratio > 1
和CompareTo()
数据类型一起使用时,comare结果总是 long
。
数据类型int
呢?当我比较两个值(小于,大于)时,结果总是 一个依赖的值,该值取决于比较的给定值,但不是 {{1 }}。
我使用.Net Framework,而不是.Net代码。
解决方法
这些实现细节用于实现性能。请注意,CompareTo
必须仅返回负,正或零值,例如-123
,{{1} },456
;不需要0
,-1
,1
。
现在让我们看一下实现。对于0
(和Short
),我们可以减去,这就足够了:
Byte
例如
// Pseudocode
CompareTo() => a - b;
这是怎么回事?如果是(short)456 - (short)123 == 333 > 0 // so 456 > 123
(byte)5 - (byte)7 == -2 < 0 // so 5 < 7
类型,则值在short
范围内,即[short.MinValue..short.MaxValue]
;当我们减去这些值时,它们将被 cast 到[-32768..32767]
中。请注意,我们保证没有整数溢出:
int
当我们有-32768 - 32767 == -65535 // min possible value,which is > int.MinValue
32767 - -32768 == 65535 // max possible value,which is < int.MaxValue
或int
进行比较时,我们不能只是减去;这是一个计数器示例:
long
我们必须比较
int.MinValue - 1 == some positive number! It means that MinValue > 1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。