• ベストアンサー

Boolean型配列中のTrueの有無を判定したい(VB2005)

VB.NET2005についての質問です。 Dim hoge(5) as Boolean  '値が格納済みとする Dim flg as Boolean 配列hogeの要素の中に、一つでもTrueがあったら、flgにTrueを格納する処理を考えています。 現在はhogeをループで回してTrueの有無を判定していますが、ループを使わず、もっと簡単に上記の処理を行うことは可能でしょうか。 例えば   flg = 処理(hoge) などといった形で処理ができれば理想的です。 どうぞよろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Public Class Q3394163 Shared Sub Main Dim hoge(5) As Boolean '全てがfalseとして初期化される Dim flg As Boolean hoge(0) = True 'つけたり外したりして動作を確認してみよう 'VB 2008Beta2ではDirectCastしなくても良かったみたいだけど, '何故かSharpDevelop 3 Build 2679でコンパイルが通らなかったので。 'なお,配列を調べるときにはSystem.Arrayに注目しよう 'http://msdn2.microsoft.com/en-us/library/system.array_members.aspx If DirectCast(hoge, System.Collections.IList).Contains(True) Then flg = True Else flg = False End If System.Diagnostics.Trace.WriteLine(flg.ToString) 'その他、ループに近い考え方になってしまうかもしれないが, 'Predicate(Of T)などを引数にとるメソッドを使ったりするのも面白いかも 'C#の記事だけど理解自体はそれほど難しくないはずだ 'http://www.atmarkit.co.jp/fdotnet/csharp20/csharp20_03/csharp20_03_01.html End Sub End Class

tekan
質問者

お礼

himajin100000さん 詳細な解説ありがとうございます。 >'なお,配列を調べるときにはSystem.Arrayに注目しよう ご助言、大変参考になります。 リンク先のHPも検討し、問題を解決することができました。 ご回答ありがとうございました。

その他の回答 (1)

回答No.2

勉強中のものですが、下記でいかがでしょうか? If Array.IndexOf(hoge,true) <> -1 Then   fig=true Else   fig=true Endif 参考になれば光栄です。

tekan
質問者

お礼

mos_cheeseさん とてもシンプルで、使いやすいです! ループで回してたのが馬鹿みたいです。。 ご回答ありがとうございました。

関連するQ&A