如何将以下代码转换为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设为私有.