2009-06-09 26 views

cevap

6

Sana (a BitArrayBitVector32 aksine istediğiniz uzunlukta olabilir gibi) başlık altında bir döngü olmadan yapabileceğini bir yolu var şüpheliyim, ama sadece don' t kendiniz yazmak istiyorum: BitArray içine

var hasAnyTrue = input.Cast<bool>().Contains(true); 
var hasAnyFalse = input.Cast<bool>().Contains(false); 
+0

kullanımı .Any() hangi daha okunabilir – juFo

1

BitArray kullanarak bunu yapıp yapamayacağınızı bilmiyorum, ancak int, long vb. Kullanırsanız ve 0'dan büyükse (true için) veya maksimum değerinden küçük olup olmadığını kontrol edin. Bunu yapmak için veri türü (yanlış için).

yüzden böyle bir şey:

bool IsTrue (int bitArray) 
{ 
    return bitArray != 0; 
} 


bool isFalse (int bitArray) 
{ 
    return bitArray != int.MinValue; 
} 
+0

Nitekim bu benim önerim olacaktı da Tamam atmalarını varsayarak. – Ian

+3

BitArray bir türüdür. Bu bir int değil. –

+0

Evet, ama dediğin gibi gerçekten bir döngü yapmadan değerleri kontrol etmenin bir yolu yok. BitArray türünü kullanmak zorunda kalmadan sadece bir bit dizisini kontrol etmenin bir yolunu teklif ediyordum. – kemiller2002

1

İndeksleme ve bireysel boolean değerleri kontrol bariz bir çözümdür. Performansla ilgili endişeleriniz varsa, öncelikle ve her şeyden önce kendi özetinizi oluşturmayı düşünmelisiniz, ancak çoğu işleminiz için BitArray'u kullanmayı tercih ediyorsanız,kodunu doğru boyutta bir int[] kullanarak (Count >> 5) ve daha sonra bu inters üzerinde sıfır veya sıfır olmayan kontrolleri uygun şekilde yapın.

2

System.Dollections'dan BitArray sınıfını kullanıyorsanız, herhangi bir şeyin doğru olup olmadığını belirlemek için aşağıdaki kodu kullanabilirsiniz.

C# sürümü

var anyTrue = myArray.Cast<bool>().Any(x => x); 

VB.Net Versiyon

Dim anyTrue = myArray.Cast(Of Boolean)().Any(Function(x) x) 
+1

Daha basit olan ile gitmekteki herhangi bir avantaj. 'Any yerine? Aslında, bunu başlangıçta yaptığım yol buydu, ama 'İçindekiler' akla geldi ve ben herhangi bir özel sebep bulamadığım için değiştirdim. Fikirler? –

İlgili konular