Если данные хранятся в смешанном или верхнем регистре в столбце type
, то сравнение SQLite с учетом регистра не найдет их. Вы можете проверить по сохраненным данным или сравнить строки следующим образом:
WHERE type='order_book' COLLATE NOCASE ...
Инкапсуляция.
Во втором экземпляре Вы только что определили переменную в первом, существует метод считывания / метод set вокруг переменной. Таким образом, если Вы решите, что хотите проверить переменную позднее то - это будет намного легче.
Плюс они обнаруживаются по-другому в Intellisense :)
Править: Обновление для операции в секунду обновило вопрос - если Вы хотите проигнорировать другие предложения здесь, другая причина состоит в том, что это - просто не хороший дизайн OO. И если у Вас нет очень серьезного основания для того, чтобы сделать его, всегда предпочитайте свойство общедоступной переменной / поле.
Пара быстрых, очевидных различий
Свойство может иметь ключевые слова средства доступа.
public string MyString { get; private set; }
Свойство может быть переопределено в потомках.
public virtual string MyString { get; protected set; }
Принципиальное различие - то, что поле является положением в памяти, где данные указанного типа хранятся. Свойство представляет одну или две единицы кода, которые выполняются, чтобы получить или установить значение указанного типа. Использование этих методов доступа синтаксически скрыто при помощи участника, который, кажется, ведет себя как поле (в котором это может появиться по обе стороны от операции присвоения).
Первый:
public string MyString {get; set; }
свойство; второй ( public string MyString
) обозначает поле.
Различие, что определенные методы (привязка данных ASP.NET для экземпляров), только работы над свойствами, а не над полями. То же верно для Сериализации XML: только свойства сериализируются, поля не сериализируются.
Поля и свойства выглядят одинаково, но они не. Свойства являются методами и как таковой существуют определенные вещи, которые не поддерживаются для свойств и некоторых вещей, которые могут произойти со свойствами, но никогда в случае полей.
Вот список различий:
out/ref
аргументы. Свойства не могут. DateTime.Now
не всегда равно себе.readonly
)MemberTypes
таким образом, они расположены по-другому (GetFields
по сравнению с GetProperties
например)Свойства и Поля могут, во многих случаях, казаться подобными, но они не. Существуют ограничения к свойствам, которые не существуют для полей, и наоборот.
Поскольку другие упомянули. Можно сделать свойство только для чтения или только для записи путем создания, это - частное средство доступа. Вы не можете сделать этого с полем. Свойства могут также быть виртуальными, в то время как поля не могут.
Думайте о свойствах как о синтаксическом сахаре для getXXX ()/setXXX () функции. Это - то, как они реализованы негласно.