- ベストアンサー
Boolean型配列中のTrueの有無を判定したい(VB2005)
VB.NET2005についての質問です。 Dim hoge(5) as Boolean '値が格納済みとする Dim flg as Boolean 配列hogeの要素の中に、一つでもTrueがあったら、flgにTrueを格納する処理を考えています。 現在はhogeをループで回してTrueの有無を判定していますが、ループを使わず、もっと簡単に上記の処理を行うことは可能でしょうか。 例えば flg = 処理(hoge) などといった形で処理ができれば理想的です。 どうぞよろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
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
その他の回答 (1)
- mos_cheese
- ベストアンサー率24% (13/53)
勉強中のものですが、下記でいかがでしょうか? If Array.IndexOf(hoge,true) <> -1 Then fig=true Else fig=true Endif 参考になれば光栄です。
お礼
mos_cheeseさん とてもシンプルで、使いやすいです! ループで回してたのが馬鹿みたいです。。 ご回答ありがとうございました。
お礼
himajin100000さん 詳細な解説ありがとうございます。 >'なお,配列を調べるときにはSystem.Arrayに注目しよう ご助言、大変参考になります。 リンク先のHPも検討し、問題を解決することができました。 ご回答ありがとうございました。