İngilizce dilinde oku

Aracılığıyla paylaş


'<genericproceduresignature>' türündeki '<typeparametername1>' türü parametresi için tür bağımsız değişken çıkarımı başarısız oldu

'<genericproceduresignature>' türündeki '<typeparametername1>' türü parametresi için tür bağımsız değişken çıkarımı başarısız oldu. '<parametername1>' parametresine geçirilen bağımsız değişkenden çıkarılmış tür bağımsız değişkeni, '<parametername2>' parametresine geçirilen bağımsız değişkenden çıkarılmış tür bağımsız değişkeniyle çakılır.

Herhangi bir tür bağımsız değişkeni olmadan genel bir yordam çağrılır ve denenen tür çıkarımı, tür parametreleri arasında bir veri türü çakışması oluşturmİştir.

Normalde, genel bir yordamı çağırdığınızda, genel yordamın tanımladığı her tür parametresi için bir tür bağımsız değişkeni belirtirsiniz. Herhangi bir tür bağımsız değişkeni sağlamazsanız, derleyici tür parametrelerine geçirilecek türleri çıkarsamaya çalışır. Çağrının bağlamı bir tür parametresi için çakışan veri türü bilgileri sağlıyorsa, tür çıkarımı başarısız olur.

Aşağıdaki kod bu hatayı oluşturabilir.

VB
Public Sub takeTwoValues(Of t)(ByVal x As t, ByVal y As t)  
End Sub  
Call takeTwoValues(4, 2.5)  

İlk bağımsız değişken derleyicinin tür parametresini çıkarabileceğinden Integer , ikinci bağımsız değişken aynı tür parametresini tçıkartırken Double , hangi veri türünün 'e tgeçirilmesiyle ilgili bir çakışma vardır.

Hata Kimliği: BC32116

Bu hatayı düzeltmek için

  • Derleyicinin bunları çıkarması gerekmemesi için genel türe tür bağımsız değişkenleri sağlayın.

    VB
    Call takeTwoValues(Of Double)(4, 2.5)  
    

    İki normal bağımsız değişkenin farklı veri türlerinde olduğu bu durumda, çağıran kodun bu veri türlerinin her ikisini de barındırabilecek bir tür bağımsız değişkeni geçirmesi gerektiğine dikkat edin. Bu durumda, Integer olarak genişletildi Double.

    -veya-

  • Normal parametreler için farklı tür parametreleri belirtmek üzere genel yordamı yeniden tanımlandığından, türler çıkarılırken çakışma olmaz.

    VB
    Public Sub takeTwoValues(Of t1, t2)(ByVal x As t1, ByVal y As t2)  
    

Ayrıca bkz.