Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> どの場合にc#はConvert.ToInt32

どの場合にc#はConvert.ToInt32

  
を使用するときに(int)を使用します。

1.c#どのような場合にConvert.ToInt32を使用するときに(int)を使用しますか。

たとえば、文字列型があります。 3、int型に変換するには、(int)3を使用するか、Convert.ToInt32(3)を使用するか、またはその両方を使用できます。

答え:どちらも整数に変換されますが、長さが異なります。 Intは16ビットで、次は32ビットです。

まず、C#では、intは実際には32ビットのSystem.Int32です。

次に、(int)とConvert.ToInt32は2つの異なる概念です。前者は型変換であり、後者はコンテンツ変換です。これらは必ずしも同等ではありません。 C#は型チェックを提供することを知っています。文字列をint型にキャストすることはできません。暗黙的な変換はさらに不可能です。例えば、次のコードは機能しません。

string text =" 1412"; int id =(int)text;

stringとintは、まったく異なる2つの互換性のない型です。そうは言っても、あなたが求めるかもしれないものは互換性がありますか?実際、(int)はlong、short、doubleなどの型変換にしか使用できませんが、この変換を行うときは精度の問題を考慮する必要があります。

ただし、上のコードのテキストには実際に値が格納されていることがよくわかりますので、この値を抽出して後で操作できるようにintの形式で格納してから、コンテンツを作成する必要があります。変換しました。コンテンツ変換はコンテンツ解釈とも呼ばれ、上記のコードを少し変更することで目的を達成できます。

string text =" 1412"; int id = Convert.ToInt32(text);

これに加えて、Int32.ParseとInt32.TryParseを使って説明することもできます。

さらに、Convert.ToInt32には、Convert.ToInt32(double value);などの多くのオーバーロードバージョンがあります。このバージョンを使用してdoubleをintに変換すると、ToInt32は変換された値をチェックします。 intで表現できますか。つまり、OverflowExceptionがスローされる場合は「範囲外」が発生するかどうか、それ以外の場合は変換されますが、変換された値がInt32.MaxValueより大きい場合はキャストに(int)を使用します。その結果、次のような誤った結果になります。

double d = Int32.MaxValue + 0.1412; int i =(int)d;

ただし、どのような値変換を行っても精度の問題を考慮する必要があります。

Copyright © Windowsの知識 All Rights Reserved