VB.netのconsole(コンソール)プログラムの標準入力からの1行の読み込みは
console.readline
を使う。
この時は文字列として読み込まれるので、例えば数字を文字列ではなく整数値として読み込みたい場合は、integer.parseでキャストして整数型(Integer型)に明示的に変換してやる。
num=integer.parse(str) とか
が、どうやら、integer.parseで明示的に型変換しなくても、VB.netは暗黙的に文字列型ー>数値型にキャストしてくれちゃうらしい。
下のプログラムは入力値(サイコロの目 1<= n <=6))に対し反対側の目を出力するプログラムだけど、console.readlineで読み込んだ文字列をinteger型のnに代入するときに、整数型に暗黙的にキャストしてるらしく、正しく動作する。
<p_dice.vb>
console.readline
を使う。
この時は文字列として読み込まれるので、例えば数字を文字列ではなく整数値として読み込みたい場合は、integer.parseでキャストして整数型(Integer型)に明示的に変換してやる。
num=integer.parse(str) とか
が、どうやら、integer.parseで明示的に型変換しなくても、VB.netは暗黙的に文字列型ー>数値型にキャストしてくれちゃうらしい。
下のプログラムは入力値(サイコロの目 1<= n <=6))に対し反対側の目を出力するプログラムだけど、console.readlineで読み込んだ文字列をinteger型のnに代入するときに、整数型に暗黙的にキャストしてるらしく、正しく動作する。
<p_dice.vb>
imports System
public class p_dice
shared Sub Main()
dim n as integer
n=Console.Readline
Console.WriteLine (7-n)
End Sub
end class
◆コンパイル
C:\vb>vbc /t:exe /out:.\p_dice.exe p_dice.vb
Microsoft(R) Visual Basic .NET Compiler version 7.00.9951
for Microsoft(R) .NET Framework version 1.00.3705.6018
Copyright (C) Microsoft Corporation 1987-2001. All rights reserved.
◆動作確認
C:\vb>p_dice
6
1
C:\vb>p_dice
3
4
C:\vb>p_dice
b
ハンドルされていない例外 : System.InvalidCastException: 文字列 "b" から型 'Integ
er' へのキャストが有効ではありません。 ---> System.FormatException: 入力文字列の
形式が正しくありません。
at Microsoft.VisualBasic.CompilerServices.DoubleType.Parse(String Value, Num
erFormatInfo NumberFormat)
at Microsoft.VisualBasic.CompilerServices.IntegerType.FromString(String Value
)
--- 内部例外スタック トレースの終わり ---
at Microsoft.VisualBasic.CompilerServices.IntegerType.FromString(String Value
)
at p_dice.Main()
◆結論
数値を入力した場合は、数値onlyの文字列はinteger型に自動的にキャストされた。
数値以外の文字が混在していると例外を発生(当たり前ですが)
VB.netは文字列を数値型変数に代入するときに、その変数の型に暗黙的にキャストする。
■関連ページ
VB.netの実数の整数型へ代入するときの自動型変換(オートキャスト)については、VB.net整数型へのオートキャスト
VBAにおけるオートキャストについては、VBA整数型へのオートキャスト
VB.netは文字列を数値型変数に代入するときに、その変数の型に暗黙的にキャストする。
■関連ページ
VB.netの実数の整数型へ代入するときの自動型変換(オートキャスト)については、VB.net整数型へのオートキャスト
VBAにおけるオートキャストについては、VBA整数型へのオートキャスト
コメント