0

私はカスタムJavascriptConverterを作成しており、受け取ったキーの1つが次のような長いタイプであるかどうかをテストしています。

if (dictionary.ContainsKey("SomeID"))
{
if (long.TryParse(serializer.ConvertToType<string>(dictionary["ContactID"]), out TheTableID))
{...}

0以上の数値のみが必要です。それが負の数であるかどうかもテストする必要がありますか、それともTryParseは負の数をテストしますか?

ありがとう。

4

6 に答える 6

4

をテストするか>= 0、代わりに使用ulong.TryParse()する必要があります(これは実際には同じことではありませんが、それでもニーズに合う可能性があります)。

于 2012-12-18T20:05:23.117 に答える
3

TryParse明らかに負の数をチェックしません。結局のところ、-1234567890は有効ですlong

代わりに、代わりに追加&& TheTableID >= 0または使用できますulong.TryParse


dictionary.TryGetValue別のチェックを行うよりも、呼び出す方がよいことに注意してContainsKey()ください。

于 2012-12-18T20:05:10.060 に答える
1

TryParse負の数をテストするのではなく、その数が有効かどうかをテストするだけですlong。それを解析した後、それが符号であるかどうかを判断するために、別のチェックが必要になります。

于 2012-12-18T20:05:11.980 に答える
0

はい、正の数だけが必要な場合は、負の数もテストする必要があります。TryParseは極性をテストしません。 http://msdn.microsoft.com/en-us/library/zc2x2b1h.aspx

于 2012-12-18T20:06:26.747 に答える
0

これが適切かどうかはわかりませんが、明示的な変換に基づいてこれが機能する可能性があります

long myLong = -22;
uint myUint = (uint)myLong;  // OK: explicit conversion
//yields 4294967274
于 2012-12-18T20:12:14.630 に答える
0

有効な番号を指定できる TryParseのオーバーロードがあります。

if (long.TryParse(str, NumberStyles.None, CultureInfo.InvariantCulture, out value)
   Console.WriteLine("Long with only digits, no sign, blanks or separators");

可能なNumberStylesフラグの説明についてはこちらをご覧ください

于 2012-12-19T20:19:44.647 に答える