簡體   English   中英

VB.NET:VB.NET中的靜態T(C#)是什么?

[英]VB.NET: What is static T (C#) in VB.NET?

考慮:

public static T GetValueOrDefault<T>(this IDataReader reader, string columnName)

 T returnValue = default(T);

我想實現像這樣檢查的DBNull。 我可以很好地遵循代碼,但我不太明白VB.NET中的靜態T是什么。 有人可以解釋一下嗎?

Shared中VB中的static等價物。 共享方法通常放在Helper類中,因為它們不需要運行類的實例。

類型T表示這是一種通用方法(這是VB 9和C#3中的新功能)。 泛型方法有效地將類型作為參數或返回泛型類型。

擴展方法也是VB 9 / C#3中的新增功能。這些方法允許您通過添加方法擴展現有類型。 您只需要一個Shared方法,它可以在與您的代碼相同的命名空間中使用,而在VB中,代碼必須位於模塊中,而不是普通的類。

模塊是一個無法實例化的類,因此只有共享方法。 它使用Module關鍵字聲明,而不是class關鍵字。 這是你在VB中的代碼。

(對於那些知道“幕后”發生了什么的人來說奇怪地將值類型設置為Nothing在VB中編譯並且是獲得值類型的默認值的支持方式)。

Imports System.Runtime.CompilerServices
<Extension()> _
Public Shared Function GetValueOrDefault(Of T)(ByVal reader As IDataReader, ByVal columnName As String) As T
Dim returnValue As T = Nothing

End Function

他正在創建一種擴展方法。 在C#中,這是通過創建靜態方法(在Visual Basic中共享)來完成的。

在Visual Basic中創建擴展方法的機制似乎與在C#中執行它的方式有很大不同。 您可能希望閱讀有關擴展方法的MSDN條目,請訪問: http//msdn.microsoft.com/en-us/library/bb384936.aspx

這是VB中的方法:

Imports System.Runtime.CompilerServices 

<Extension()> _
Public Shared Function GetValueOrDefault(Of T)(ByVal reader As IDataReader, ByVal columnName As String) as T
    Dim returnvalue As T = Nothing
End Function

我不知道如何在VB中執行默認(T),所以我把它留了出來。

你所看到的不是“靜態T”,而是兩個獨立的部分。

  • public表示該方法是公開可見的。
  • static表示方法為static。 這意味着它為類運行,而不是為實例運行。
  • T - 是返回類型。

有關靜態功能的更多信息。

VB.NET中的靜態函數稱為共享函數。

有關共享功能的更多信息。

C#的static關鍵字與VB的Shared關鍵字相同。

您的示例中的T是泛型方法中的type-parameter。

在VB中:

Public Function GetValueOrDefault(Of T)(ByVal reader as IDataReader, ByVal columnName as string) as T

意味着當你調用方法時,你提供了一個類型參數(告訴T將調用該方法的類型)

但是不確定用於創建擴展方法的VB語法。 (這是你的第一個參數上的“this”關鍵字表示的。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM