когда мы должны использовать тип nullable в С#.net? может кто-нибудь объяснить на примере.
Что такое тип с нулевым значением в С#?
Ответ 1
Обнуляемые типы (когда использовать обнуляемые типы) - это типы значений, которые могут принимать значение NULL в качестве значения. Его значение по умолчанию равно null
означает, что вы не присвоили ему значение Примеры типов значений: int, float, double, DateTime и т.д. Эти типы имеют следующие значения по умолчанию
int x = 0;
DateTime d = DateTime.MinValue;
float y = 0;
Для Nullable альтернатив, значение по умолчанию любого из вышеперечисленных равно нулю
int? x = null; //no value
DateTime? d = null; //no value
Это заставляет их вести себя как ссылочные типы, например, объект, строка
string s = null;
object o = null;
Они очень полезны при работе со значениями из базы данных, когда значения, возвращаемые из вашей таблицы, NULL
. Представьте в таблице базы данных целочисленное значение, которое может быть NULL, такое значение может быть представлено только 0
если переменная С# не имеет значения nullable - обычное целое число.
Кроме того, представьте столбец EndDate
, значение которого не определено до фактического времени в будущем. Это может быть установлено в NULL в БД, но вам понадобится обнуляемый тип для хранения этого в С#
DateTime StartDate = DateTime.Today;
DateTime EndDate? = null; //we don't know yet
Ответ 2
Когда нам нужно использовать тип NULL в С#.net?
Представьте, что существует целая переменная id
, которая представляет конкретный id
.
Вы можете хранить 1
, 44
или что-то еще. Но что, если вы не знаете id.You не можете просто сохранить -1
или 0
. Вы можете подумать, чтобы назначить null
но обычно null
нельзя присваивать типам значений.
int id=null;//error
Nullable type
позволяет вам сделать это.
Типы значений, такие как int,double,char..
, не могут быть представлены как null
.
Чтобы представить null
в типе значения, вы должны использовать Nullable type
..
Он обозначается как тип значения, за которым следует ?
int? id=null;
который транслируется на
Nullable<int> id=new Nullable<int>();
Значение по умолчанию для этого типа с нулевым значением: null
.
Ответ 3
Nullable type - это новая концепция, введенная в С# 2.0, которая позволяет пользователю определять нулевое значение для примитивных типов данных языка С#. Важно, чтобы здесь не был тип Nullable - тип структуры.
BlogPost: Nullable type - Почему нам нужны нулевые типы в языке программирования?
Ответ 4
from: http://msdn.microsoft.com/en-us/library/1t3y8s4s(v=vs.80).aspx Необязательными типами являются экземпляры структуры System.Nullable. Тип с нулевым значением может представлять нормальный диапазон значений для его базового типа значений плюс дополнительное значение NULL. Например, Nullable <Int32 > , произносится как "Nullable of Int32", может быть присвоено любое значение от -2147483648 до 2147483647 или ему может быть присвоено нулевое значение. A Nullable <bool> могут быть назначены значения true или false или null
class NullableExample
{
static void Main()
{
int? num = null;
if (num.HasValue == true)
{
System.Console.WriteLine("num = " + num.Value);
}
else
{
System.Console.WriteLine("num = Null");
}
//y is set to zero
int y = num.GetValueOrDefault();
// num.Value throws an InvalidOperationException if num.HasValue is false
try
{
y = num.Value;
}
catch (System.InvalidOperationException e)
{
System.Console.WriteLine(e.Message);
}
}
}
Ответ 5
Предположим, что в приложении у вас есть требование захватить клиента Дата рождения, которая не является обязательным полем. Вы можете объявить свойство DateOfBirth как тип System.DateTime в классе Customer. Поскольку DateTime является типом значения, он не может принимать нулевые значения, поэтому он будет иметь значение по умолчанию.
Поэтому, когда клиент не заполнил явное значение в элементе управления датой рождения, вам нужно будет сделать некоторую логику, прежде чем сохранять ее в БД, чтобы считать значение по умолчанию равно NULL. В БД вы можете сохранить NULL в поля DateTime.
Чтобы избежать этих нежелательных шагов для интерпретации значений в пользовательском интерфейсе и в уровне DA, вы можете использовать типы Nullable в С#, что сделает код более удобочитаемым.
Чтобы прочитать дополнительную информацию об типах с нулевым значением, обратитесь к Нулевые типы в С# с примером.