visual basic.net 2019-判断null,is null
Nothing 關鍵字(Visual Basic)
表示任意數據類型的默認值。 對于引用類型,默認值為 null 引用。 對于值類型,默認值取決于值類型是否可以為 null。
對于不可為 null 的值類型,Visual Basic 中的 Nothing 不同于C#中的 null。 在 Visual Basic 中,如果將不可為 null 的值類型的變量設置為 Nothing,則該變量將設置為其聲明的類型的默認值。 在C#中,如果將不可為 null 的值類型的變量分配到 null,則會發生編譯時錯誤。
Nothing 表示數據類型的默認值。 默認值取決于變量是值類型還是引用類型。
值類型的變量直接包含其值。 值類型包括所有數值數據類型、Boolean、Char、Date、所有結構和所有枚舉。 引用類型的變量存儲對內存中對象的實例的引用。 引用類型包括類、數組、委托和字符串。
如果變量是值類型,則 Nothing 的行為取決于變量是否為可為 null 的數據類型。 若要表示可以為 null 的值類型,請將 ? 修飾符添加到類型名稱。 將 Nothing 分配給可以為 null 的變量會將值設置為 null。 有關詳細信息和示例,請參閱可以為 null 的值類型。
如果變量是不可為 null 的值類型,則將 Nothing 分配給它會將它設置為其聲明類型的默認值。 如果該類型包含變量成員,則它們都設置為其默認值。
引用類型肯定是可以為nothing的
可以為 Null 的值類型 (Visual Basic)
有時,使用在某些情況下沒有定義值的值類型。 例如,數據庫中的字段可能必須區分具有有意義的賦值和沒有賦值。 可以擴展值類型以獲取其正常值或空值。 這種擴展稱為空類型。
每個空值類型都是從泛型Nullable結構構造的。 考慮跟蹤與工作相關的活動的數據庫。 下面的示例構造一個可Booleannull 的類型,并聲明該類型的變量。 可以通過三種方式編寫聲明:
Dim ridesBusToWork1? As Boolean Dim ridesBusToWork2 As Boolean? Dim ridesBusToWork3 As Nullable(Of Boolean)綜合示例
Imports System Class TestPrivate t As IntegerSub New(ByVal tv As Integer)'構造函數 Me.t = tvEnd SubSub New()'構造函數 Me.t = 0End Sub End Class Module ProgramSub Main(args As String())Dim x1? As BooleanDim x2? As Boolean = FalseDim x3? As Boolean = New BooleanDim t1 As TestDim t2 As Test = New Test(20)Dim t3 As Test = New TestConsole.WriteLine($"t1 is nothing:{t1 Is Nothing} {vbCrLf}t2 is nothing:{t2 Is Nothing} {vbCrLf}t3 is nothing:{t3 Is Nothing} {vbCrLf}")Console.WriteLine($"x1 is nothing:{x1 Is Nothing} {x1} {vbCrLf}x2 is nothing:{x2 Is Nothing} {x2} {vbCrLf}x3 is nothing:{x3 Is Nothing} {x3} {vbCrLf}")End Sub End Module t1 is nothing:Truet2 is nothing:Falset3 is nothing:Falsex1 is nothing:Truex2 is nothing:False Falsex3 is nothing:False FalseF:\learn\vblearn2-console\bin\Debug\netcoreapp3.1\vblearn2-console.exe (進程 200)已退出,代碼為 0。 要在調試停止時自動關閉控制臺,請啟用“工具”->“選項”->“調試”->“調試停止時自動關閉控制臺”。 按任意鍵關閉此窗口. . .DBNull 類
表示不存在的值。 此類不能被繼承。
DBNull類表示不存在的值。 例如,在數據庫中,表行中的列可能不包含任何數據。 也就是說,列被視為根本不存在,而不只是沒有值。 DBNull對象表示不存在的列。 此外,COM 互操作使用 DBNull 類來區分 VT_NULL 變量(指示不存在的值)和 VT_EMPTY 變量,這表示未指定的值。
DBNull類型為單一實例類,這意味著只存在一個 DBNull 對象。 DBNull.Value成員表示唯一的 DBNull 對象。 DBNull.Value 可用于顯式將不存在的值分配給數據庫字段,不過,大多數 ADO.NET 數據訪問接口 DBNull 在字段沒有有效值時自動分配值。 您可以 DBNull 通過將字段的值傳遞給方法來確定從數據庫字段中檢索到的值是否是一個值 DBNull.Value.Equals 。 但是,某些語言和數據庫對象提供一些方法,使您可以更輕松地確定數據庫字段的值是否為 DBNull.Value 。 其中包括 Visual Basic IsDBNull 函數、 Convert.IsDBNull 方法、方法 DataTableReader.IsDBNull 和 IDataRecord.IsDBNull 方法。
不要將 null 面向對象的編程語言中的概念與 DBNull 對象混淆。 在面向對象的編程語言中, null 表示缺少對對象的引用。 DBNull 表示未初始化的變量或不存在的數據庫列。
Nullable 結構
可空值類型,注意:其實質是一個引用類型,使用泛型建立
定義
命名空間:System 程序集:mscorlib.dll, System.Runtime.dll
表示可分配有 null 的值類型。
public struct Nullable<T> where T : struct類型參數
T
Nullable 泛型類型的基礎值類型。
實例
Imports System Class TestPrivate t As IntegerSub New(ByVal tv As Integer)'構造函數 Me.t = tvEnd SubSub New()'構造函數 Me.t = 0End Sub End Class Module ProgramSub Main(args As String())Dim x1 As Nullable(Of Integer)Dim x2 As Nullable(Of Integer) = 11Dim x3 As Nullable(Of Integer) = New Nullable(Of Integer)Console.WriteLine($"x1 is nothing:{x1 Is Nothing} {x1} {vbCrLf}x2 is nothing:{x2 Is Nothing} {x2} {vbCrLf}x3 is nothing:{x3 Is Nothing} {x3} {vbCrLf}")End Sub End Module x1 is nothing:Truex2 is nothing:False 11x3 is nothing:TrueF:\learn\vblearn2-console\bin\Debug\netcoreapp3.1\vblearn2-console.exe (進程 15312)已退出,代碼為 0。 要在調試停止時自動關閉控制臺,請啟用“工具”->“選項”->“調試”->“調試停止時自動關閉控制臺”。 按任意鍵關閉此窗口. . .如果可以為類型賦值或賦值,則可以為 null ,這意味著類型沒有任何值。 默認情況下,所有引用類型(如 String )都可以為 null,但所有值類型(如 Int32 )都不是。
在 c # 和 Visual Basic 中,通過在 ? 值類型后使用表示法將值類型標記為可為 null。 例如, int? 在 c # 或 Integer? in Visual Basic 聲明可分配的整數值類型 null 。
此 Nullable 結構支持僅將值類型用作可以為 null 的類型,因為引用類型在設計上是可以為 null 的。
Nullable類提供對結構的互補支持 Nullable 。 Nullable類支持獲取可以為 null 的類型的基礎類型,以及針對其基礎值類型不支持泛型比較和相等運算的可以為 null 的類型對的比較和相等運算。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的visual basic.net 2019-判断null,is null的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 线性规划之单纯形法(1)
- 下一篇: SSM 框架整合 spring 发送邮件