基类:
Class List(Of T)
Function Contains(ByVal value As T) As Boolean
派生类:
Class Bar : List(Of Exception) ' Exception type as example '
Function Contains(Of U)(ByVal value As U) As Boolean
编译器告诉我那两个是相同的,所以我需要声明Overloads / new这个第二个函数。
但是我想使用U来区分类型(一个逻辑),如NullReferenceException,ArgumentNull Exception等,但是也希望保留基本函数(不区分类型 - 其他逻辑)。
答案 0 :(得分:4)
那么等效的肯定会在C#中编译。我会说你应该避免这样做 - 但如果它的表现不同,请给你的方法一个不同的名字。派生类中的类型参数重载很少是一个好主意 - 实际上从List<T>
派生出来本身并不是一个好主意。
在VB中你必须声明你明确地超载 - 你是谁。您应该将Overloads
添加到函数声明中。基本上这个方法不与基本Contains
方法相同 - 它具有不同数量的类型参数(1而不是0),并且参数具有不同的类型({{1而不是U
)。请注意,与您的标题相反,您不会覆盖任何内容。
你能否提供一些关于你真正想要通过这门课程实现什么的指示?我们或许能够提出更好的方法。
答案 1 :(得分:0)
如果您希望将不同的类型传递给该类,那么您可能希望在泛型声明中使用where。这可能足以让编译器感到高兴。