What's wrong with this generic class?

written by Ryan Olshan on Monday, January 02 2006

Q: What's wrong with the below generic class?

VB.NET
Imports System.Data
Imports System.Web

Public Class GenericClass(Of T As DataTable)
   Public Function GetValue(ByVal val As T) As
T
      Return
val
   
End Function

   Public Function GetValue(ByVal val As T) As DataTable
      
Return
val
   
End Function

   Public Sub GetValue(ByVal val As T)
      HttpContext.Current.Response.Write(val)
   
End
Sub
End
Class

C#
using System.Data;
using System.Web;

public class GenericClass<T> where T : DataTable
{
   
public
T GetValue(T val)
   {
      
return
val;
   }

   public DataTable GetValue(T val)
   {
      
return
val;
   }

   public void GetValue(T val)
   {
      
HttpContext
.Current.Response.Write(val);
   }
}

A: At first glance, the overloaded methods appear to be unique. However, this is not the case. In VB.NET, the first 2 methods would error and in C# the last 2 methods would error. Why does this happen? Like non-generic methods, your generic methods must be unique by their method signatures, not just by their return types.

Kick this post on .NET Kicks

Similar Posts

  1. Generic Type Inference
  2. What's wrong with this generic type?
  3. Generic Sub Classes

Post a comment