2011-08-18 27 views

回答

7

好,要明確每一位到零,你可以只使用Array.Clear

Array.Clear(logonHours, 0, logonHours.Length); 

設置每個位是稍微更難:

for (int i = 0; i < logonHours.Length; i++) 
{ 
    logonHours[i] = 0xff; 
} 

如果您發現自己正在填充一組數組N,你可以寫一個擴展方法:

public static void FillArray<T>(this T[] array, T value) 
{ 
    // TODO: Validation 
    for (int i = 0; i < array.Length; i++) 
    { 
     array[i] = value; 
    } 
} 
+1

對Array.Clear +1:甚至沒有記住。 – Tigran

+0

感謝您的幫助 – KSM

2

BitArray.SetAll

System.Collections.BitArray a = new System.Collections.BitArray(logonHours); 
a.SetAll(true); 

請注意,此副本從字節數組中的數據。它不僅僅是一個包裝。

1

與各個位的任何數據類型時,這可能比你更需要的,但是...

通常情況下,我定義了每個位的位置常量,然後用二元運算符|,&,和^。

const byte bit1 = 1; 
    const byte bit2 = 2; 
    const byte bit3 = 4; 
    const byte bit4 = 8; 
        . 
        . 
    const byte bit8 = 128; 

然後你就可以把你要打開和關閉使用位操作任何位。

byte byTest = 0; 
    byTest = byTest | bit4; 

會打開位4,但保持其餘不變。

您將使用&和^關閉它們或執行更復雜的練習。

很明顯,因爲你只想把所有的位向上或向下,那麼你可以將字節設置爲0或255.這會將它們全部關閉或打開。

相關問題