アプリ版:「スタンプのみでお礼する」機能のリリースについて

教えて下さい。
vb.net(VS2010 FW4.0)にて、2つのByte配列の各要素をOR演算し、結果をどちらかのByte配列へ格納するか、別のByte配列へ格納したいのです。
For分で回すとできるのは分かるのですが、メソッドを使ってできないか教えて下さい。

条件としては、2つのByte配列の要素数は同じです。
For分で記述すると、
Dim bytA() as Byte = {0,0,0,0,0,128,128,128,128,128}
Dim bytB() as Byte = {255,255,255,255,255,0,0,0,0,0}

For i as Integer = 0 to bytA.GetUpperBound(0)
bytA(i) = bytA(i) Or bytB(i)
Next

''' 結果は bytA = (255,255,255,255,255,128,128,128,128,128)となる

A 回答 (2件)

「LINQ」と「ラムダ式」について調べてみてください。


使いこなせるようになるとかなり強力です。

例)
bytA = bytA.Select(Function(b, i) b Or bytB(i)).ToArray()

参考URL:http://msdn.microsoft.com/ja-jp/library/bb534869 …

この回答への補足

試してみた所、うまくいきました。
ありがとうございました。
でも、For文で回した方が処理時間が3倍程度短くできそうです。うまく高速化できる方法があれば、合わせてご教授願えると助かります。

補足日時:2014/03/04 19:20
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
早速試してみます。

お礼日時:2014/03/04 09:09

> でも、For文で回した方が処理時間が3倍程度短くできそうです。


ToArrayで時間がかかっちゃいますからねぇ。
時間を気にするならFor文で回すのが確実です。

どうしてもワンライナーで、ということなら、
 bytA.Select(Function(b, i) bytA(i) = bytA(i) Or bytB(i)).GetEnumerator()
と書くこともできますが……
    • good
    • 0
この回答へのお礼

再度回答ありがとうございます。
そうですね、今回はFor文で処理させようと思います。
でも、[LINQ][ラムダ式]については今後活用させて頂きます。

お礼日時:2014/03/05 23:24

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