2017-03-19 6 views
-1

私はCを新しくしていますので、許してください。しかしintをint32に変換しなければならない理由を知りたいのですが?C#intとint32の宣言

例えば、私はlowerRangeをintとして宣言していますが、後でユーザー入力を読むときにint32に変換する必要があります。そうしないと、 "暗黙のうちに ' int "。

または私は、ユーザーが文字列を入力しているため、変換する必要があると仮定しているので、intに変換する必要があります。その場合、なぜ宣言しなければならないのでしょうかlowerRange int最初の場所?

int lowerRange; 
... 
lowerRange = Convert.ToInt32(Console.ReadLine()); 
+0

「int」には数値特性があります。 'int'に対して数値演算を行うことはできますが、' string'では可能ではありません。ユーザ入力はstringです。 –

+0

"なぜintをint32に変換する必要があるのですか?" - 同じ型の別の名前であり、C#での変換を表現できないため、この質問には本当に回答できません。他の手は2つの質問で覆われています... –

答えて

8

Console.ReadLine()方法をbに必要stringを返します。 (Convert.ToInt32を使用して)整数に変換され、lowerRange整数変数に代入されます。

int lowerRange; 
... 
string userInput = Console.ReadLine(); 
lowerRange = Convert.ToInt32(userInput); 

はまた、ユーザが入力として何も入力することができますので、ReadLineメソッドは文字列を返す理由があることに気づく:

だから基本的に、あなたはこれを持っています。だから、そうでない場合ToInt32メソッドが例外をスローします、ユーザーがTryParseメソッドを使用して、有効な数値を入力したことを検証することがあります:私はINT32に変換する必要が

string userInput = Console.ReadLine(); 
if (int.TryParse(userInput, out lowerRange)) 
{ 
    // The user entered a valid integer you can use the lowerRange variable here 
} 
else 
{ 
    Console.WriteLine("Please enter a valid number"); 
} 
+0

'TryParse'を使って少し慎重になるでしょう。有効でない文字列が入力されたら' 0'を返し、 '0'なら予期しない動作につながるかもしれません。次のステージで何かを意味していました。 'try' /' catch'を使うことで、何をするかをより詳細に制御できます。 – Everyone

0

それ以外の場合は、 は私に与えます私が「暗黙的 'INT' にタイプ 'string' を変換することはできませんというエラー。

ユーザー入力からであるConsole.Readline()の戻り文字列ので。

またはユーザーが 文字列を入力しているため変換する必要があると仮定しています。その場合はintに変換する必要があります。その場合は私になります なぜlowerRangeをint場所?

lowerRangeを文字列として使用する場合は、整数として宣言する必要はありません。しかし、整数として使用する場合は、変換する必要があります(Convertクラスを使用)。