Тем не менее с помощью операторов == и ! = можно проверить, содержит ли обнуляемый объект пустое значение. Например, следующая проверка вполне допустима и дает истинный результат.
if(upper == null) // ...
Если в логическом выражении участвуют два объекта типа bool?, то его результат может иметь одно из трех следующих значений: true (истинное), false (ложное) или null (неопределенное). Ниже приведены результаты применения логических операторов & и | к объектам типа bool?.
р
Q
P 1 Q
P&Q
true
null
true
null
false
null
null
false
null
true
true
null
null
false
null
false
null
null
null
null
И наконец, если логический оператор ! применяется к значению типа bool?, которое является пустым (null), то результат этой операции будет неопределенным (null).
Частичные типы
Начиная с версии 2.0, в C# появилась возможность разделять определение класса, структуры или интерфейса на две или более части с сохранением каждой из них в отдельном файле. Это делается с помощью контекстного ключевого слова partial. Все эти части объединяются вместе во время компиляции программы.
Если модификатор partial используется для создания частичного типа, то он принимает следующую общую форму:
partial
где
Рассмотрим пример разделения простого класса, содержащего координаты ХУ, на три отдельных файла. Ниже приведено содержимое первого файла.
partial class XY {
public XY(int a, int b) {
X =• a;
Y = b;
}
}
Далее следует содержимое второго файла.
partial class XY {
public int X { get; set; }
}
И наконец, содержимое третьего файла.
partial class XY {
public int Y { get; set; }
}
В приведенном ниже файле исходного текста программы демонстрируется применение классаXY.
// Продемонстрировать определения частичного класса.
using System;
class Test {
static void Main {
XY xy = new XY (1, 2);
Console.WriteLine(xy.X + + xy.Y);
}
}
Для того чтобы воспользоваться классомXY,необходимо включить в компиляцию все его файлы. Так, если файлы классаXYназываютсяxyl. cs, ху2 . csихуЗ . cs,а классTestсодержится в файлеtest. cs,то для его компиляции достаточно ввести в командной строке следующее.
csc test.cs xyl.cs xy2.cs xy3.cs
И последнее замечание: в C# допускаются частичные обобщенные классы. Но параметры типа в объявлении каждого такого класса должны совпадать с теми, что указываются в остальных его частях.
Частичные методы