我正在编写一个自定义的JavascriptConverter,我正在测试是否收到的密钥长度是这样的类型:
if (dictionary.ContainsKey("SomeID"))
{
if (long.TryParse(serializer.ConvertToType<string>(dictionary["ContactID"]), out TheTableID))
{...}
我只想要大于或等于0的数字。我是否还需要测试它是负数还是对负数进行TryParse测试?
感谢。
答案 0 :(得分:4)
您要么必须测试>= 0
,要么使用ulong.TryParse()
代替(这不是同一回事,但仍可能符合您的需求)。
答案 1 :(得分:3)
TryParse
显然不会检查负数。毕竟,-1234567890
是有效的long
。
相反,您可以添加&& TheTableID >= 0
或使用ulong.TryParse
代替。
请注意,最好拨打dictionary.TryGetValue
而不是进行单独的ContainsKey()
检查。
答案 2 :(得分:1)
TryParse
不测试负数,它仅测试该数字是否为有效long
。在解析之后,您需要单独检查以确定它的符号。
答案 3 :(得分:0)
是的,如果你只想要正数,你还需要测试负数。 TryParse不测试极性。 http://msdn.microsoft.com/en-us/library/zc2x2b1h.aspx
答案 4 :(得分:0)
不确定这是否合适,但基于显式转换
,这也适用于您long myLong = -22;
uint myUint = (uint)myLong; // OK: explicit conversion
//yields 4294967274
答案 5 :(得分:0)