По-моему, определенный для типа код в универсальном классе является запахом кода. Я осуществил бы рефакторинг его для получения чего-то вроде этого:
public class MyClass<T>
{
...
}
public class IntClass : MyClass<int>
{
public void IncrementMe()
{
this.value++;
}
}
Бинарный оператор '|' - побитовый оператор ИЛИ; для каждого бита в двух входных словах, если любой бит равен 1, тогда соответствующий бит в результате будет равен 1:
0001 | 0010 = 0011
'|' Оператор обычно используется для установки отдельных битов в слове, например, в опубликованном вами фрагменте кода.
Бинарный оператор «&» является побитовым оператором «И»; для каждого бита в двух входных словах, если оба бита равны 1, тогда соответствующий бит в результате будет равен 1:
0101 & 0110 = 0100
Оператор '&' может использоваться для проверки, установлен ли бит. Например, чтобы проверить, установлен ли бит MSGINFO_ENABLE, вы d выполнить что-то вроде
if (VirtBoard.msginfo_mask & MSGINFO_ENABLE != 0)
{
/* MSGINFO_ENABLE bit is set, do something interesting */
}
Выражение
VirtBoard.msginfo_mask & MSGINFO_ENABLE
будет оцениваться как 1 (0x0001), если бит MSGINFO_ENABLE был установлен, и 0 в противном случае.
Унарный оператор '~' - это побитовый оператор НЕ; для каждого бита во входном слове соответствующий бит в результате устанавливается на противоположное значение:
~ 0001 = 1110
Вы можете использовать оператор '~' вместе с оператором '&', чтобы очистить отдельный бит. Например, если бы мы хотели очистить бит MSGINFO_ENABLE, мы бы сделали что-то вроде
VirtBoard.msginfo_mask = VirtBoard.msginfo_mask & ~MSGINFO_ENABLE;
, которое можно сократить до
VirtBoard.msginfo_mask &= ~MSGINFO_ENABLE;
. Отрицание MSGINFO_ ENABLE дает нам 1111111111111110 (при условии 16-разрядного целого числа без знака); так как все начальные биты равны 1, и если это противоречит маске VirtBoard.msginfo_, все биты, которые уже установлены, сохраняются; т.е. 0000000000001111 и 1111111111111110 = 0000000000001110.
многобайтовый, если вы
правильно установил PostgreSQL.
Сюда входят: ТЕКСТ (рекомендуется)
VARCHAR CHAR
Это varchar и текст , предполагая, что ваша база данных находится в кодировке UNICODE. Если ваша база данных находится в кодировке, отличной от UNICODE, не существует специального типа данных, который дал бы вам строку Unicode - вы можете сохранить его как поток байтов, но это не будет строка.
Стандартный тип данных TEXT идеально подходит для этого.