|
■No85942 (taka さん) に返信 > 簡略化できる方法はないでしょうか
変数 1 つにまとめたいなら、 Dim ab() As Integer = Strings.Split(Console.ReadLine(), " ").Select(Function(s) CInt(s)).ToArray()
MsgBox(ab(0)) MsgBox(ab(1)) などと書くことはできます。
ですがこの場合、入力検査がまったく含まれていませんから、 x y とか 7 5 3 とか 100 のように、想定外の文字列が入力された場合にはエラーになってしまいます。
もしも不正な入力を判定するためのロジックを入れた上で、 ReadLine の処理結果を一つの変数で受け取りたいのであれば、
Sub Main() Dim data = Sample.FromLine(Console.ReadLine()) If data.Valid Then MsgBox(data.a) MsgBox(data.b) Else MsgBox("不正な入力") End If End Sub
のような書き方をすれば、呼び出し側は 1 個の構造体変数だけですみます。 その分、構造体側に追加のコードが必要になりますが。
Public Structure Sample Public Property Valid As Boolean Public a, b As Integer Public Shared Function FromLine(raw As String) As Sample Dim cols() As String = Strings.Split(raw, " ") Dim result As New Sample() With {.Valid = cols.Length = 2} If result.Valid Then result.Valid = Integer.TryParse(cols(0), result.a) End If If result.Valid Then result.Valid = Integer.TryParse(cols(1), result.b) End If Return result End Function End Structure
|