Это означает, что ваш код использовал ссылочную переменную объекта, которая была установлена в нуль (т. е. она не ссылалась на экземпляр фактического объекта).
Чтобы предотвратить ошибку, объекты, которые могут быть пустыми, должны быть протестированы для null перед тем, как использовать.
if (myvar != null)
{
// Go ahead and use myvar
myvar.property = ...
}
else
{
// Whoops! myvar is null and cannot be used without first
// assigning it to an instance reference
// Attempting to use myvar here will result in NullReferenceException
}
Существует побитовый XOR-оператор - карет (^), т. е. для:
SELECT 170 ^ 75
Результат 225.
Для логического XOR используйте ключевое слово ANY и НЕ ВСЕ, т.е.
WHERE 5 > ANY (SELECT foo) AND NOT (5 > ALL (SELECT foo))
Используя булеву алгебру, нетрудно показать, что:
A xor B = (not A and B) or (A and not B)
A B | f = notA and B | g = A and notB | f or g | A xor B
----+----------------+----------------+--------+--------
0 0 | 0 | 0 | 0 | 0
0 1 | 1 | 0 | 1 | 1
1 0 | 0 | 1 | 1 | 1
1 1 | 0 | 0 | 0 | 0
Оператором xor является ^
Например: SELECT A ^ B
, где A и B являются целыми типами данных категории.
Как пояснили в вашем комментарии, Spacemoses, вы указали пример: WHERE (примечание равно null) ^ (ID равно null). Я не понимаю, почему вы решили принять любой ответ, приведенный здесь, как ответ на этот вопрос. Если мне нужен xor для этого, я думаю, что мне придется использовать логику AND / OR:
WHERE (Note is null and ID is not null) OR (Note is not null and ID is null)
Это эквивалентно:
WHERE (Note is null) XOR (ID is null)
, когда ' XOR 'недоступен.
Это ^
http://msdn.microsoft.com/en-us/library/ms190277.aspx
См. также некоторый код здесь, в середине страница Как перевернуть бит в SQL Server с помощью оператора «Побитовый NOT»
MS SQL только короткая форма (начиная с SQL Server 2012):
1=iif( a=b ,1,0)^iif( c=d ,1,0)