本文由机器翻译。若要查看英语原文,请勾选“英语”复选框。 也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语

Nullable<T> 结构

 

表示可分配有 null 的值类型。

命名空间:   System
程序集:  mscorlib(位于 mscorlib.dll)

[SerializableAttribute]
public struct Nullable<T>
where T : struct

类型参数

T

Nullable<T> 泛型类型的基础值类型。

名称说明
System_CAPS_pubmethodNullable<T>(T)

Nullable<T> 结构的新实例初始化为指定值。

名称说明
System_CAPS_pubpropertyHasValue

获取一个值,该值指示 Nullable<T> 对象是否具有基础类型的有效值。

System_CAPS_pubpropertyValue

获取当前 Nullable<T> 对象的值,如果它已被分配了有效的基础值。

名称说明
System_CAPS_pubmethodEquals(Object)

指示当前 Nullable<T> 对象是否与指定的对象相等。(覆盖 ValueType.Equals(Object)。)

System_CAPS_pubmethodGetHashCode()

检索由 Value 属性返回的对象的哈希代码。(覆盖 ValueType.GetHashCode()。)

System_CAPS_pubmethodGetType()

获取当前实例的 Type(继承自 Object。)

System_CAPS_pubmethodGetValueOrDefault()

检索当前 Nullable<T> 对象的值,或该对象的默认值。

System_CAPS_pubmethodGetValueOrDefault(T)

检索当前 Nullable<T> 对象的值或指定的默认值。

System_CAPS_pubmethodToString()

返回当前 Nullable<T> 对象的值的文本表示形式。(覆盖 ValueType.ToString()。)

名称说明
System_CAPS_puboperatorSystem_CAPS_staticExplicit(Nullable<T> to T)

定义 Nullable<T> 实例到其基础值的显式转换。

System_CAPS_puboperatorSystem_CAPS_staticImplicit(T to Nullable<T>)

创建一个新的 Nullable<T> 对象,并将其初始化为指定的值。

一种类型认为是可以为 null,如果它可以分配一个值,也可以分配null,这意味着类型具有无论如何没有值。 默认情况下,所有都引用类型,如String,是否可以为 null,但所有值类型,如Int32,不是。

在 C# 和 Visual Basic 中,你可以将值类型作为可以为 null 标记使用?后的值类型的表示法。 例如,int?在 C# 或Integer?在 Visual Basic 中声明可以分配的整数值类型null

Nullable<T>结构支持使用值类型为 null 的类型,因为引用类型可以为 null 设计使然。

Nullable类支持互补Nullable<T>结构。 Nullable类支持获取可以为 null 的类型的基础类型,其基础值类型可以为 null 的类型的对比较和相等操作不支持泛型比较和相等性操作。

两个基本成员Nullable<T>结构不是HasValueValue属性。 如果HasValue属性Nullable<T>对象是true,可通过访问对象的值Value属性。 如果HasValue属性是false,对象的值是不确定并尝试访问Value属性将引发InvalidOperationException

可以为 null 的类型进行装箱时,公共语言运行时自动框的基础值Nullable<T>对象,而不Nullable<T>对象本身。 也就是说,如果HasValue属性是true的内容Value属性进行装箱。 未装箱可以为 null 的类型的基础值时,公共语言运行时创建一个新Nullable<T>结构初始化为基础的值。

如果HasValue可以为 null 的类型的属性是false,装箱操作的结果是null 因此,如果装箱可以为 null 的类型传递给需要的对象自变量的方法,该方法必须准备好处理这种情况,其中的参数是nullnull是取消装箱到可以为 null 的类型,公共语言运行时创建一个新Nullable<T>结构并初始化其HasValue属性false

从开始.NET Framework 4.5.1,可以包括Nullable<T>类型作为结构在 WinMD 库中导出的成员。 以前,不支持这样做。

下面的代码示例定义了 Microsoft Pubs 示例数据库中的表中的三个行。 表包含两个都不可以为 null 的列和两个都可以为 null 的列。

using System;

class Sample 
{
    // Define the "titleAuthor" table of the Microsoft "pubs" database. 
    public struct titleAuthor 
    {
      // Author ID; format ###-##-####
      public string au_id;
      // Title ID; format AA####
      public string title_id;
      // Author ORD is nullable.
      public short? au_ord;
      // Royalty Percent is nullable.
      public int? royaltyper;
    }

    public static void Main() 
    {
      // Declare and initialize the titleAuthor array.
      titleAuthor[] ta = new titleAuthor[3];
      ta[0].au_id = "712-32-1176";
      ta[0].title_id = "PS3333";
      ta[0].au_ord = 1;
      ta[0].royaltyper = 100;

      ta[1].au_id = "213-46-8915";
      ta[1].title_id = "BU1032";
      ta[1].au_ord = null;
      ta[1].royaltyper = null;

      ta[2].au_id = "672-71-3249";
      ta[2].title_id = "TC7777";
      ta[2].au_ord = null;
      ta[2].royaltyper = 40;

      // Display the values of the titleAuthor array elements, and 
      // display a legend.
      Display("Title Authors Table", ta);
      Console.WriteLine("Legend:");
      Console.WriteLine("An Author ORD of -1 means no value is defined.");
      Console.WriteLine("A Royalty % of 0 means no value is defined.");
    }

    // Display the values of the titleAuthor array elements.
    public static void Display(string dspTitle, 
                               titleAuthor[] dspAllTitleAuthors)
    {
      Console.WriteLine("*** {0} ***", dspTitle);
      foreach (titleAuthor dspTA in dspAllTitleAuthors) {
         Console.WriteLine("Author ID ... {0}", dspTA.au_id);
         Console.WriteLine("Title ID .... {0}", dspTA.title_id);
         Console.WriteLine("Author ORD .. {0}", dspTA.au_ord ?? -1);
         Console.WriteLine("Royalty % ... {0}", dspTA.royaltyper ?? 0);
         Console.WriteLine();       
      }
    }
}
// The example displays the following output:
//     *** Title Authors Table ***
//     Author ID ... 712-32-1176
//     Title ID .... PS3333
//     Author ORD .. 1
//     Royalty % ... 100
//     
//     Author ID ... 213-46-8915
//     Title ID .... BU1032
//     Author ORD .. -1
//     Royalty % ... 0
//     
//     Author ID ... 672-71-3249
//     Title ID .... TC7777
//     Author ORD .. -1
//     Royalty % ... 40
//     
//     Legend:
//     An Author ORD of -1 means no value is defined.
//     A Royalty % of 0 means no value is defined.

通用 Windows 平台
自 8 起可用
.NET Framework
自 2.0 起可用
可移植类库
可移植 .NET 平台 中受支持
Silverlight
自 2.0 起可用
Windows Phone Silverlight
自 7.0 起可用
Windows Phone
自 8.1 起可用

此类型的所有公共静态(Visual Basic 中的 已共享 在 Visual Basic 中)成员都是线程安全的。不保证所有实例成员都是线程安全的。

返回页首
显示: