На самом деле существует структура, которая является коллекцией. BitVector32
является структурой и действует как набор из 32 логических значений, или 4 байта, или 2 шорт. Это очень удобно, когда вы хотите заняться биткойлингом, но не хотите слишком много думать о создании масок и тому подобного.
Также, если вы действительно планируете развернуть свой собственный, имейте в виду, что если вы заставите его реализовать что-то вроде IList<Int32>
, вы никогда не должны отправлять его в код, который читается как
public static void SomeMethod(IList<Int32> list)
{
....
}
Поскольку это будет боксировать, и каждый доступ к элементу, скорее всего, приведет к боксу, вместо этого отправьте его методу, который имеет эту подпись: *
public static void SomeMethod<T>(T list) where T:IList<Int32>
{
....
}
В качестве второго примера перед каждым callvirt будет выдаваться код операции constrained
, что позволит избежать блокирования при вызове членов структуры. Удачи все же.