logo
CSharp_Prog_Guide

Операторы

Существующие для типов значений предварительно определенные унарные и бинарные операторы, а также определенные пользователем операторы могут также использоваться допускающими значение null типами. Эти операторы создают значение null, если операнды имеют значение null; иначе оператор использует для вычисления результата содержащееся значение. Например:

---

Если при выполнении сравнения с допускающими значение null типами один из допускающих значение null типов содержит null, то результатом сравнения всегда является false. Следовательно, важно не считать, что если результатом сравнения является false, то противоположным случаем является true. Например:

int? num1 = 10;

int? num2 = null;

if (num1 >= num2)

{

System.Console.WriteLine("num1 is greater than or equal to num1");

}

else

{

// num1 is NOT less than num2

}

Комментарий, написанный после else является не верным, потому что num2 содержит null и, следовательно, не содержит какого-либо значения.

Сравнение двух допускающих значение null типов, оба из которых содержат null, будет давать результат true.

The ?? Operator

The ?? operator defines a default value that is returned when a nullable type is assigned to a non-nullable type.

int? c = null;

// d = c, unless c is null, in which case d = -1.

int d = c ?? -1;

This operator can also be used with multiple nullable types. For example:

int? e = null;

int? f = null;

// g = e or f, unless e and f are both null, in which case g = -1.

int g = e ?? f ?? -1;

The bool? type

The bool? nullable type can contain three different values: true, false and null.

Nullable Booleans are like the Boolean variable type that is used in SQL. To ensure that the results produced by the & and | operators are consistent with the three-valued Boolean type in SQL, the following predefined operators are provided:

bool? operator &(bool? x, bool? y)

bool? operator |(bool? x, bool? y)

The results of these operators are listed in the following table: