||
и &&
булевы операторы, и встроенные, как гарантируют, возвратятся или true
или false
. Ничто иное.
|
, &
и ^
побитовые операторы. Когда домен чисел, на которые Вы воздействуете, равняется всего 1 и 0, тогда они - точно то же, но в случаях, где Ваши булевские переменные не являются строго 1 и 0 – как имеет место с языком C – можно закончить с некоторым поведением, которое Вы не хотели. Например:
BOOL two = 2;
BOOL one = 1;
BOOL and = two & one; //and = 0
BOOL cand = two && one; //cand = 1
В C++, однако, эти bool
тип, как гарантируют, будет только или true
или false
(которые преобразовывают неявно в соответственно 1
и 0
), таким образом, это - меньше беспокойства от этой позиции, но то, что люди не привыкли к наблюдению таких вещей в коде, приводит хороший аргумент в пользу того, что он не сделал его. Просто скажите b = b && x
и быть сделанными с ним.
ObservableCollection
won't work for a DataGridView
: it implements INotifyCollectionChanged
, not IBindingList
, and the DataGridView
doesn't know about INotifyCollectionChanged
. It is intended for WPF bindings and is not used in Windows FormsBindingList
is a good option, but note that it doesn't support sorting or filtering out of the box. However, you can find some custom implementations of these features on the web.DataTable
is probably your best option if you need sorting and/or filtering capabilityСтруктура привязки данных полностью различается между WinForms и WPF, поэтому (в общем) не существует "лучшего выбора" для обоих их.
Для WinForms использование общего BindingList
позволит выполнить большую часть того, что вы хотите (хотя он не обрабатывает изменения отдельных элементов; вам придется реализовать это самостоятельно).
Для WPF ObservableCollection
служит той же цели.
На самом деле Microsoft рекомендует использовать коллекцию в качестве вашей коллекции привязок, а не список из-за возможности выполнять автоматические функции, такие как добавление и удаление элементов, очистка коллекции или установка значения существующего item.
Класс коллекции в MSDN.
Если вы хотите привязать коллекцию к datagridview, я бы использовал список привязки. Хотя список привязки не поддерживает стандартную сортировку, вы можете расширить его, создав свой собственный список, производный от BindinList, и реализовать собственную сортировку.
См. здесь о том, как это сделать.
DataTable, возможно?
Кроме того, вы часто можете принудительно перерисовывать gridview и включать новые элементы, вызывая DataGridview.Invalidate () сразу после добавления элементов.
I created my own collection inheriting from BindingList which supports sorting, filtering, etc. It works well now but was a lot of work, I don't really recommend doing one yourself... I think there's one already implemented on CodeProject or a similar site, I'll give you the link if I find it.
Edit:
I found this CodeProject article with an implementation of IBindingList which supports sorting, filtering, etc. I didn't test it though, so I don't know how good the implementation is, but it might be worth checking it out.
I do not think there's a hard/general rule of what type of collection is best suited for DataGridView.
It really depends on a several factors:
- The nature of the data
- What are the operations (if any) to be performed from the UI to the DB (e.g. CRUD, sort, filter)
- Size of the data
etc etc..