C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

入力された値の判断方法

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■93924 / inTopicNo.1)  入力された値の判断方法
  
□投稿者/ 粗品 (1回)-(2020/02/20(Thu) 19:22:26)

分類:[VB.NET/VB2005 以降] 

データの入力時の判定方法なのですが、
例えば数値の1,2,3,4,5,9のみ許可、というのを判断する時(変動ではなく固定のもの)
ベストプラクティスというものはあるのでしょうか?

一番ベタなのは
If hoge = 1 OrElse hoge = 2 OrElse hoge = 3 OrElse hoge = 4 OrElse hoge = 5 OrElse hoge = 9 Then
Else
End If

というのだと思うのですが、もうちょっとスマートというかすっきりと書けないものかと思いまして

引用返信 編集キー/
■93925 / inTopicNo.2)  Re[1]: 入力された値の判断方法
□投稿者/ 魔界の仮面弁士 (2563回)-(2020/02/20(Thu) 20:14:04)
Contains 拡張メソッド、または Any 拡張メソッドで。

Dim a() = New Integer() {1, 2, 3, 4, 5, 9}
If a.Contains(hoge) Then
引用返信 編集キー/
■93926 / inTopicNo.3)  Re[1]: 入力された値の判断方法
□投稿者/ 魔界の仮面弁士 (2564回)-(2020/02/20(Thu) 21:31:24)
2020/02/20(Thu) 21:59:51 編集(投稿者)

No93924 (粗品 さん) に返信
> ベストプラクティスというものはあるのでしょうか?

あるいは If の代わりに Case を使うという手も。

Select Case hoge
 Case 1, 2, 3, 4, 5, 9
  '
 Case Else
  '
End Select



判定する数がもっと多い場合は、HashSet(Of ) で管理するのも良いでしょう。
※要 .NET 3.5 以上

Dim hash As New HashSet(Of Integer) From {1, 2, 3, 4, 5, 9} 'From 構文は VB2010 以降
If hash.Contains(hoge)


VB.NET 2002/2003 あたりまで遡るなら、
ArrayList の Contains インスタンス メソッドか
Array.IndexOf 静的メソッドあたりで。
引用返信 編集キー/
■93928 / inTopicNo.4)  Re[2]: 入力された値の判断方法
□投稿者/ 粗品 (2回)-(2020/02/21(Fri) 15:04:04)
> Dim hash As New HashSet(Of Integer) From {1, 2, 3, 4, 5, 9} 'From 構文は VB2010 以降
> If hash.Contains(hoge)

HashSetなるものが有るのですね
勉強になりました!
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ