「みんな教えて! 選手権!!」開催のお知らせ

VB.NET2005についての質問です。

Dim hoge(5) as Boolean  '値が格納済みとする
Dim flg as Boolean

配列hogeの要素の中に、一つでもTrueがあったら、flgにTrueを格納する処理を考えています。

現在はhogeをループで回してTrueの有無を判定していますが、ループを使わず、もっと簡単に上記の処理を行うことは可能でしょうか。

例えば
  flg = 処理(hoge)
などといった形で処理ができれば理想的です。

どうぞよろしくお願い致します。

A 回答 (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. …
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/cshar …

End Sub
End Class
    • good
    • 0
この回答へのお礼

himajin100000さん
詳細な解説ありがとうございます。

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

ご回答ありがとうございました。

お礼日時:2007/10/02 21:53

勉強中のものですが、下記でいかがでしょうか?



If Array.IndexOf(hoge,true) <> -1 Then
  fig=true
Else
  fig=true
Endif

参考になれば光栄です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/10/02 21:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A