問題整数を文字列に変換する場合は、
ToString() メソッドを使うと簡単に文字列に変換できますが、
文字列を整数に変換する方法を答えてください。
C# or VB.NET どちらでも。
答えの理由もあわせて答えてください。なぜその解答を選んだのか?VB.NET Dim s As String = "123"
Dim iAns As Integer
iAns = Integer.Parse(s)
理由 C#を例にとると 文字列->整数変換は Convert.ToInt32(s) Int32.Parse(s) int.Parse(s) と3種類ある(他にもあるかも) 2番目と、3番目は、Int32のエイリアス(別名)がintであるから同じものである。 Parse()は文字列変換に特化したメソッドであるため、第二引数をつかった使用方法 へ応用できて、以下のようなことができる。 string s = @"\10,000"; // 記号つきの通貨を数値にしたい int i = int.Parse(s, NumberStyles.Currency); // 通貨として解析
一方、Convertに関して、ヘルプを確認すると、
Convert.ToInt32 メソッド C#オーバーロードの一覧
指定した String 形式の数値を、それと等価な 32 ビット符号付き整数に変換します。 .NET Compact Framework でもサポート。 public static int ToInt32(string); ■訂正 以下の説明文は stringの下に掲載されている unshort の説明文でした。 よくみたら、「 32 ビット符号なし整数の値」ってかいてあるやん・・・ orz... //指定した 32 ビット符号なし整数の値を等価の 16 ビット符号付き整数に変換します。 //このメソッドは、CLS と互換性がありません。 //.NET Compact Framework でもサポート。 ■訂正 CLSに準拠しているので多言語でも問題なくご使用できますね。m(_ _)m //共通言語仕様 (CLS: Common Language Specification) に準拠していないってことは //なにやら危険が香りがします。 //他の言語とやりとりする場合危険かも。 さらに、 Convert.ToInt32 メソッド (String) [C#] には、 解説
と、あり、ワンクッション多い分の関数呼び出しのオーバヘッドがかかるんでは・・戻り値は、value に対して Int32.Parse メソッドを呼び出した結果得られる値です。 ということで、個人的には Convert.ToInt32 はお勧めできません。。 業務でこのコードを実装する場合は例外を考慮する必要があります。 Parse()の場合、3種類の例外が発生する恐れがあるため、 以下のコードを書くとよろしいかと。 string s = "123";
int iAns;
try
{
iAns = int.Parse(s);
}
catch (ArgumentNullException ex)
{
//s が null 参照 (Visual Basic では Nothing) です。
//(この例外コードはsのnull参照を判定するコードで回避可)
}
catch (FormatException ex)
{
//s に、必要に応じて追加されるマイナス記号と、
//それに続く 0 から 9 の一連の数字以外の要素が含まれています。
//■追記
// 空文字列 "" の場合はここにひっかかります。
}
catch (OverflowException ex)
{
//s が MinValue 未満の数値か、
//MaxValue より大きい数値を表しています。
}
いろいろトラックバックから情報をいただきました。(感謝)
例外については、必要なければ捕捉(catch)しないで、上位メソッドでまとめて受ける! のも手です。 catch(Exception ex) や catch で、全ての例外を捕捉して、処理を継続するのは危険です。 せめて、ログを履くなりの処理は実装しましょう。 .NETアプリケーションでは、例外処理のコストが大きいこともしっておくといいでしょう。 このあたりは、今後問題として出題しますね。(たぶん) |

- >
- コンピュータとインターネット
- >
- コンピュータ
- >
- Windows





