如题
int? x=null;
有什么用?该怎么用?用在什么场合?
int? x=null;
有什么用?该怎么用?用在什么场合?
解决方案 »
- winform中serialport发送数据问题
- 关于c#中使用intptr的问题 急~~~在线等
- 使用存储过程和断开式连接数据库获取指定值
- 邪门,关于Environment.CommandLine
- 如何解决webBrowser新开页面问题?
- C#继承类,方法重载的一个问题。
- msdn webcast的视频一个多小时,声音可以,画面也比较清晰,为什么只有10M左右?
- 生成清单时出现问题。没有足够的内存继续执行程序。
- 试图运行项目时出错,无法在web服务器上启动调试
- 一个紧急的问题,请各位高手帮助!!!!
- 关于:被编制索引的键需要 2 个值,但收到了 1 个值。(急)
- 求助如何把下面VB语句转换成C#来实现,谢谢
类似于string 是 System.String的缩写的意思int? x=null;
也就是
Nullable<int> x = null;
即声明了一个 Nullable<int>型的变量,赋初值为空
public struct Nullable<T> where T: struct
{
private bool hasValue;
internal T value;
public Nullable(T value)
{
this.value = value;
this.hasValue = true;
} public bool HasValue
{
get
{
return this.hasValue;
}
}
public T Value
{
get
{
if (!this.HasValue)
{
ThrowHelper.ThrowInvalidOperationException(ExceptionResource.InvalidOperation_NoValue);
}
return this.value;
}
}
public T GetValueOrDefault()
{
return this.value;
} public T GetValueOrDefault(T defaultValue)
{
if (!this.HasValue)
{
return defaultValue;
}
return this.value;
} public override bool Equals(object other)
{
if (!this.HasValue)
{
return (other == null);
}
if (other == null)
{
return false;
}
return this.value.Equals(other);
} public override int GetHashCode()
{
if (!this.HasValue)
{
return 0;
}
return this.value.GetHashCode();
} public override string ToString()
{
if (!this.HasValue)
{
return "";
}
return this.value.ToString();
} public static implicit operator T?(T value)
{
return new T?(value);
} public static explicit operator T(T? value)
{
return value.Value;
}
}
对于一个类型,如果既可以给它分配一个值,也可以给它分配 nullNothingnullptrnull 引用(在 Visual Basic 中为 Nothing)(表示没有任何值),我们就说这个类型是可空的。因此,可空类型可表示一个值,或表示不存在任何值。例如,类似 String 的引用类型就是可空类型,而类似 Int32 的值类型不是可空类型。由于值类型的容量只够表示适合于该类型的值,因此它不可为空;值类型没有表示空值所需的额外容量。 Nullable<T> 结构支持只将一个值类型用作可空类型,因为引用类型本身就是可空的。 Nullable 类为 Nullable<T> 结构提供补充支持。Nullable 类支持获取可空类型的基础类型,以及对基础值类型不支持一般的比较和相等性操作的可空类型进行成对的比较和相等性操作。方案
根据不同的应用场合,可使用可空类型来表示存在或不存在的内容。例如,HTML 标记的某个可选属性可能存在于某一个标记中,但不存在于另一个标记中;或者数据库表的某个可空列可能存在于表的某一行中,但不存在于另一行中。 可将属性或列表示为类中的字段,并且可将该字段定义为值类型。该字段可包含属性或列的所有有效值,但不能提供一个附加值来表示属性或列不存在。在这种情况下,应将该字段定义为可空类型,而不是值类型。基本属性
Nullable<T> 结构的两个基础成员为 HasValue 和 Value 属性。如果 Nullable<T> 对象的 HasValue 属性为 true,则可以使用 Value 属性访问该对象的值。如果 HasValue 属性为 false,则表示尚未定义该对象的值,并且尝试访问 Value 属性时会引发 InvalidOperationException。 装箱和取消装箱
在对可空类型进行装箱时,公共语言运行库自动将 Nullable<T> 对象的基础值(而不是 Nullable<T> 对象本身)装箱。也就是说,如果 HasValue 属性为 true,则将 Value 属性的内容装箱。在对可空类型的基础值进行取消装箱时,公共语言运行库创建一个新的初始化为基础值的 Nullable<T> 结构。如果可空类型的 HasValue 属性为 false,则装箱操作的结果为 nullNothingnullptrnull 引用(在 Visual Basic 中为 Nothing)。因此,如果将已装箱的可空类型传递给需要对象参数的方法,则该方法必须准备处理参数为 nullNothingnullptrnull 引用(在 Visual Basic 中为 Nothing) 的情况。如果对 nullNothingnullptrnull 引用(在 Visual Basic 中为 Nothing) 进行取消装箱使其成为可空类型,则公共语言运行库会创建一个新的 Nullable<T> 结构并将其 HasValue 属性初始化为 false。