.offset()
возвращает объект, содержащий свойства top
и left
. Если вы удалите скобки из своего .top()
, он вернет то, что вы ищете.
var anchor_counter = jQuery('#counter_anchor').offset().top;
К сожалению, похоже, что Ваш метод мог бы быть столь хорошим, как это добирается - если бы BitArray реализовал IEnumerable <T> (вместо просто IEnumerable) затем, то мы могли бы использовать дополнительные методы LINQ для создания этого немного более симпатичным.
На вашем месте я обернул бы это в дополнительный метод на BitArray:
public static BitArray Prepend(this BitArray current, BitArray before) {
var bools = new bool[current.Count + before.Count];
before.CopyTo(bools, 0);
current.CopyTo(bools, before.Count);
return new BitArray(bools);
}
public static BitArray Append(this BitArray current, BitArray after) {
var bools = new bool[current.Count + after.Count];
current.CopyTo(bools, 0);
after.CopyTo(bools, current.Count);
return new BitArray(bools);
}
Платформа не обеспечивает хороший способ сделать это. Вы могли создать массив bools, который является достаточно большим для хранения обоих BitArrays. Затем используйте BitArray. CopyTo для копирования каждого BitArray в массиве bools (можно указать, где начать вставлять элементы).
После того, как это сделано, создайте другой BitArray с конструктором, который принимает массив bools.
Большая работа, которую я знаю, но там, кажется, не иначе. Это - меньше кода, чем Ваш существующий метод как бы то ни было.
Можно сделать это с LINQ, после Cast<bool>()
bitarray 'становится' IEnumerable<bool>
:
var previous = new BitArray(new bool[] { true });
var current = new BitArray(new bool[] { false });
BitArray newBitArray =
new BitArray(previous.Cast<bool>().Concat(current.Cast<bool>()).ToArray());
Я не думаю, что этот метод LINQ будет быстр.