Для построчного измерения дельты попробуйте gnomon .
Утилита командной строки, немного похожая на ts moreutils, для добавления информации о временной метке к стандартному выводу другой команды. Полезно для длительных процессов, где вы хотите получить исторический отчет о том, что так долго.
Вы также можете использовать опции --high
и / или --medium
, чтобы указать порог длины в секундах, в течение которого гномон будет выделять метку времени красным или желтым цветом. И вы можете сделать еще несколько вещей.
Something else to consider...
Your collection is an array wrapper and it has some array-like semantics. ie, Items can't be inserted or removed but they can be modified.
Arrays return false
for IsReadOnly
and true
for IsFixedSize
.
I think I would probably implement IList
in addition to IList
and then mimic the array behaviour, so far as IsReadOnly
and IsFixedSize
are concerned.
The key word in the remark from MSDN is the "or":
A collection that is read-only does not allow the addition, removal, или модификация элементов после создания коллекции.
Ваша коллекция разрешает модификацию, поэтому возврат true
для IsReadOnly
будет На мой взгляд, нарушение этого контракта.
Я думаю, что для выполнения условий контракта вам нужно будет вернуть true
.
Вы можете (дополнительно) реализовать IBindingList
- здесь есть AllowNew
, AllowEdit
и AllowRemove
. Вы должны вернуть true
из AllowEdit
и false
из двух других.
Проверяет ли ваш вызывающий, это зависит от вызывающего. Однако будет много кода привязки пользовательского интерфейса.
добавлено:
Также; вы должны , вероятно, реализовать IList
, если вы реализуете IList
; в частности, IList
важен для ряда сценариев отражения и привязки, где типы заранее неизвестны.
Here, the semantics of modification are important. There is a difference between modifying the elements of a collection and modifying the objects contained by the collection. Think of the elements of the actual spaces in the collection. You can't add spaces, remove spaces, or change the object in a certain space. That's the contract that IsReadOnly
abides by.