КАК мы все знаем, что в C #
есть два разных типа
• Тип ссылки
• Тип значения
Тип ссылки может быть представлен как несуществующее значение (NULL), но тип Vaue, однако не может представлять значение NULL.
Например,
Поскольку String является ссылочным типом, вы можете объявить его как null
String s=null; //ok
Но если вы попытаетесь объявить тип значения, например Int32, нулевым, это приведет к ошибке компиляции
Int32 i=null; // compiler error
Чтобы представить значение null в типе значения, вы должны использовать специальную конструкцию, называемую типом, допускающим значение NULL. Это представлено с помощью? символ.
Int32? I=null; //now its ok
Теперь сценарий, когда обычные типы, допускающие обнуляемость, используется в программировании базы данных, где calss отображается в таблицу с обнуляемыми столбцами.
• Если столбцы относятся к ссылочному типу типа String, например (адрес электронной почты и адрес клиента), проблема не возникает, так как вы можете определить его как нулевой в C #
• Но если столбцы имеют тип значения, который является двойным, например (остаток на счете клиента), вы не можете сопоставить его с C # без использования обнуляемых типов.
Например,
// сопоставляется с таблицей Customer в базе данных
public class Customer
{
...
public decimal? AccountBalance;
}