问题描述
我想在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