如何将以下代码转换为VB.NET? class A{ public int NumberA { get; set; }}class B : A, I{ public int NumberB { get; set; }}interface I{ int NumberA { get; set; } int NumberB { get; set; }} 在VB.NET中,属性声明后的Implements关键
class A
{
public int NumberA { get; set; }
}
class B : A, I
{
public int NumberB { get; set; }
}
interface I
{
int NumberA { get; set; }
int NumberB { get; set; }
}
在VB.NET中,属性声明后的Implements关键字存在问题.所以我需要做这样的事情:
Class B
Inherits A
Implements IC
Public Property NumberB() As Integer Implements IC.NumberB
Get
Return m_NumberB
End Get
Set(ByVal value As Integer)
m_NumberB = value
End Set
End Property
Private m_NumberB As Integer
Public Property NumberA1() As Integer Implements IC.NumberA
Get
Return MyBase.NumberA
End Get
Set(ByVal value As Integer)
MyBase.NumberA = value
End Set
End Property
End Class
但是存在重复的误导性财产NumberA1.有什么方法可以更聪明地做到这一点?
是的,在vb.net中不受支持.与C#不同,编译器要求使用显式的Implements关键字实现接口.你最接近的是:Interface ICA
Property NumberA() As Integer
End Interface
Interface ICB
Property NumberB() As Integer
End Interface
Class A
Implements ICA
Public Property NumberA() As Integer Implements ICA.NumberA
'' etc
End Property
End Class
Class B
Inherits A
Implements ICA, ICB
Public Property NumberB() As Integer Implements ICB.NumberB
'' etc...
End Property
End Class
注意,B现在不再需要实现NumberA,即使它实现了ICA,也接受了A中的实现.但当然,这需要过多地修改原始定义.您使用的解决方法很好,并且在运行时没有任何不利影响.请注意,您可以将A1设为私有.
