3

(result[i].JobOrder)私の問題は、 intに変換したいときです(result[i].JobOrder)。代わりに、整数ではなく「0x0001d524」のようなものを取得します。そして、私はその理由を理解できませんでした。

for (int i = 0; i < result.Count; i++)
{
    if (Convert.ToInt32(result[i].JobOrder) > maxJobOrder)
    {
        maxJobOrder = Convert.ToInt32(result[i].JobOrder);
    }
}
4

4 に答える 4

15

コードは機能しますが、整数を 16 進数で表示するようにデバッガーを設定しています。値 0x0001d524 は、整数 120100 の 16 進表現です。

これはプログラムのエラーではなく、IDE の構成オプションです。Visual Studio を使用している場合は、[デバッグ] ツールバーの [16 進数] ボタンをクリックして、この設定を変更できます。

六角ボタン


余談ですが、C# 3 以降を使用している場合はMax、ループの代わりにメソッドを使用して最大値を見つけることにより、コードを簡素化できます。

maxJobOrder = result.Max(x => int.Parse(x.JobOrder));
于 2012-06-23T09:25:44.317 に答える
1

Int32.TryParse を使用してみてください http://msdn.microsoft.com/en-us/library/f02979c7.aspxを参照してください

于 2012-06-23T09:27:07.260 に答える
1

で置き換えConvert.ToInt32てみてくださいint.parse()

于 2012-06-23T09:27:12.743 に答える
0

int.parse を使用するという提案には、少し欠陥があります。

int.parseは、失敗するたびに次の例外のいずれかをスローします。また、変換する入力として文字列のみを受け入れます。

ArgumentNullException
FormatException 
OverflowException

Convert.ToInt32は、失敗するたびに次の例外のいずれかをスローします。さらに、null 値を渡すことができますが、これは出力値として 0 を返すことを意味し、整数に変換される複数のデータ型も処理します。

FormatException 
OverflowException

int.TryParseは例外をスローしませんが、メソッドが false を返すと出力値として 0 を返し、変換する入力として文字列のみを受け入れます。

ソリューションの整合性の問題を防ぐために、ジョブに適したツールを選択する必要があります。

于 2013-01-16T09:10:22.013 に答える