無法從這些引數推斷定義於 'typename' 中的擴充方法 '<methodname>' 之型別參數的資料型別,因為它們不會轉換成相同型別

更新:2007 年 11 月

錯誤訊息

無法從這些引數推斷定義在 'typename' 中擴充方法 '<methodname>' 之型別參數的資料型別,因為它們不會轉換成相同型別。明確地指定資料型別可能能夠修正這個錯誤。

當評估泛型擴充方法的呼叫時,已嘗試使用型別推斷來判斷型別參數的資料型別。編譯器找不到資料型別符合所有引數的條件約束。因此,編譯器報告了此錯誤。

注意事項:

當指定引數不是選項時 (例如,查詢運算式中的查詢運算子),錯誤訊息會出現,但不會有第二句。

下列程式碼示範此錯誤。

Option Strict Off
Module Module3
    Sub Main()

        Dim c1 As New Class1

        '' Not valid. Integer and Date do not convert to the same type.
        'c1.targetMethod(19, #3/4/2007#)

    End Sub

    <System.Runtime.CompilerServices.Extension()> _
    Sub targetMethod(Of T)(ByVal p0 As Class1, ByVal p1 As T, ByVal p2 As T)
    End Sub

    Class Class1
    End Class

End Module

錯誤 ID:BC36661 和 BC36658

若要更正這個錯誤

  • 您可以將一個或多個引數明確轉換為相容的型別,如下列程式碼所示:

    c1.targetMethod(19, #3/4/2007#.ToOADate)
    
  • 您可以指定型別參數或引數要轉成之參數的資料型別:

    c1.targetMethod(Of String)(19, #3/4/2007#)
    

請參閱

概念

擴充方法 (Visual Basic)

寬鬆委派轉換

Visual Basic 中的泛型程序

隱含和明確轉換

參考

型別轉換函式

其他資源

Visual Basic 中的型別轉換