Nullable<T> 结构
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示可分配有 null
的值类型。
generic <typename T>
where T : value classpublic value class Nullable
public struct Nullable<T> where T : struct
[System.Serializable]
public struct Nullable<T> where T : struct
type Nullable<'T (requires 'T : struct)> = struct
[<System.Serializable>]
type Nullable<'T (requires 'T : struct)> = struct
Public Structure Nullable(Of T)
类型参数
- T
Nullable<T> 泛型类型的基础值类型。
- 继承
- 属性
示例
下面的代码示例定义 Microsoft Pubs 示例数据库中表的三行。 该表包含两个不可为 null 的列和两个可以为 null 的列。
using namespace System;
// Define the "titleAuthor" table of the Microsoft "pubs" database.
value struct titleAuthor
{
public:
// Author ID; format ###-##-####
String^ au_id;
// Title ID; format AA####
String^ title_id;
// Author ORD is nullable.
Nullable<short> au_ord;
// Royalty Percent is nullable.
Nullable<int> royaltyper;
// Display the values of the titleAuthor array elements.
static void Display(String^ dspTitle,
array<titleAuthor>^ dspAllTitleAuthors)
{
Console::WriteLine("*** {0} ***", dspTitle);
for each (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.HasValue ?
dspTA.au_ord.Value : -1);
Console::WriteLine("Royalty % ... {0}", dspTA.royaltyper.HasValue ?
dspTA.royaltyper.Value : 0);
Console::WriteLine();
}
}
};
void main()
{
// Declare and initialize the titleAuthor array.
array<titleAuthor>^ ta = gcnew array<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 = nullptr;
// ta[1].royaltyper = nullptr;
ta[2].au_id = "672-71-3249";
ta[2].title_id = "TC7777";
// ta[2].au_ord = nullptr;
ta[2].royaltyper = 40;
// Display the values of the array elements, and
// display a legend.
titleAuthor::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.");
}
// 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.
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.
open System
// Define the "titleAuthor" table of the Microsoft "pubs" database.
type titleAuthor =
struct
// Author ID format ###-##-####
val mutable au_id: string
// Title ID format AA####
val mutable title_id: string
// Author ORD is nullable.
val mutable au_ord: Nullable<int16>
// Royalty Percent is nullable.
val mutable royaltyper: Nullable<int>
end
// Display the values of the titleAuthor array elements.
let display dspTitle (dspAllTitleAuthors: #seq<titleAuthor>) =
printfn $"*** {dspTitle} ***"
for dspTA in dspAllTitleAuthors do
printfn $"Author ID ... {dspTA.au_id}"
printfn $"Title ID .... {dspTA.title_id}"
printfn $"Author ORD .. {dspTA.au_ord.GetValueOrDefault -1s}"
printfn $"Royalty %% ... {dspTA.royaltyper.GetValueOrDefault -1}\n"
// Declare and initialize the titleAuthor array.
let ta = Array.zeroCreate<titleAuthor> 3
ta[0].au_id <- "712-32-1176"
ta[0].title_id <- "PS3333"
ta[0].au_ord <- Nullable 1s
ta[0].royaltyper <- Nullable 100
ta[1].au_id <- "213-46-8915"
ta[1].title_id <- "BU1032"
ta[1].au_ord <- Nullable()
ta[1].royaltyper <- Nullable()
ta[2].au_id <- "672-71-3249"
ta[2].title_id <- "TC7777"
ta[2].au_ord <- Nullable()
ta[2].royaltyper <- Nullable 40
// Display the values of the titleAuthor array elements, and
// display a legend.
display "Title Authors Table" ta
printfn "Legend:"
printfn "An Author ORD of -1 means no value is defined."
printfn "A Royalty %% of 0 means no value is defined."
// 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.
Class Sample
' Define the "titleAuthor" table of the Microsoft "pubs" database.
Public Structure titleAuthor
' Author ID; format ###-##-####
Public au_id As String
' Title ID; format AA####
Public title_id As String
' Author ORD is nullable.
Public au_ord As Nullable(Of Short)
' Royalty Percent is nullable.
Public royaltyper As Nullable(Of Integer)
End Structure
Public Shared Sub Main()
' Declare and initialize the titleAuthor array.
Dim ta(2) As titleAuthor
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 = Nothing
ta(1).royaltyper = Nothing
ta(2).au_id = "672-71-3249"
ta(2).title_id = "TC7777"
ta(2).au_ord = Nothing
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.")
End Sub
' Display the values of the titleAuthor array elements.
Public Shared Sub Display(ByVal dspTitle As String, _
ByVal dspAllTitleAuthors() As titleAuthor)
Console.WriteLine("*** {0} ***", dspTitle)
Dim dspTA As titleAuthor
For Each 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.GetValueOrDefault(-1))
Console.WriteLine("Royalty % ... {0}", dspTA.royaltyper.GetValueOrDefault(0))
Console.WriteLine()
Next
End Sub
End Class
'This 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.
注解
有关此 API 的详细信息,请参阅可为 Null T<> 的补充 API 备注。
构造函数
Nullable<T>(T) |
将 Nullable<T> 结构的新实例初始化为指定值。 |
属性
HasValue |
获取一个值,该值指示 Nullable<T> 对象是否具有基础类型的有效值。 |
Value |
获取当前 Nullable<T> 对象的值,如果它已被分配了有效的基础值。 |
方法
Equals(Object) |
指示当前 Nullable<T> 对象是否与指定的对象相等。 |
GetHashCode() |
检索由 Value 属性返回的对象的哈希代码。 |
GetValueOrDefault() |
检索当前 Nullable<T> 对象的值,或基础类型的默认值。 |
GetValueOrDefault(T) |
检索当前 Nullable<T> 对象的值或指定的默认值。 |
ToString() |
返回当前 Nullable<T> 对象的值的文本表示形式。 |
运算符
Explicit(Nullable<T> to T) |
定义 Nullable<T> 实例到其基础值的显式转换。 |
Implicit(T to Nullable<T>) |
创建一个新的 Nullable<T> 对象,并将其初始化为指定的值。 |