当我们必须在 C#.net中使用可为空的类型时?任何人都可以举例说明。
4 回答
可空类型(何时使用可空类型)是可以将 null 作为值的值类型。它的默认值null
意味着你没有给它赋值。值类型的示例是 int、float、double、DateTime 等。这些类型具有这些默认值
int x = 0;
DateTime d = DateTime.MinValue;
float y = 0;
对于 Nullable 替代方案,上述任何一项的默认值为 null
int? x = null; //no value
DateTime? d = null; //no value
这使得它们的行为类似于引用类型,例如对象、字符串
string s = null;
object o = null;
它们在处理来自数据库的值时非常有用,当从表返回的值是NULL
. 想象一下您的数据库表中的一个整数值可能是 NULL,只有0
在 c# 变量不可为空时才能表示 - 常规整数。
此外,想象一个EndDate
列,其值直到将来的实际时间才确定。可以在数据库中将其设置为 NULL,但您需要一个可为空的类型将其存储在 C# 中
DateTime StartDate = DateTime.Today;
DateTime EndDate? = null; //we don't know yet
当我们必须在 C#.net 中使用可空类型?
想象有一个整数变量id
代表一个特定的id
.
您可以存储1
,44
或其他任何东西。但是如果您不知道 id 怎么办。您不能只存储-1
or 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
.
可空类型是 C#2.0 中引入的新概念,它允许用户将空值分配给 C# 语言的原始数据类型。这里重要的是 Nullable 类型是 Structure 类型。
来自: http: //msdn.microsoft.com/en-us/library/1t3y8s4s (v=vs.80).aspx Nullable 类型是 System.Nullable 结构的实例。可空类型可以表示其基础值类型的正常值范围,外加一个额外的空值。例如,一个 Nullable<Int32>,发音为“Nullable of Int32”,可以分配从 -2147483648 到 2147483647 的任何值,也可以分配空值。可以为 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);
}
}
}