在C#中,可以摆脱这种情况:

interface IImpliedReadOnly
{
int SomeNumber {get;}
}
class Implementation : IImpliedReadOnly
{
private int someNumber = 0;
public int SomeNumber {get{return someNumber;}set{someNumber=value;}}
}


但是我找不到在VB中执行此操作的等效方法。
如果我在接口ReadOnly中设置该属性,则实现类必须匹配那些访问权限,并且还必须将该属性声明为ReadOnly,而不是像C#中那样能够实现getter和setter。

有没有办法解决?
如果没有,为什么VB不允许呢?

最佳答案

实际上,您可以使用以下VB代码:

Friend Interface IImpliedReadOnly
    ReadOnly Property SomeNumber() As Integer
End Interface

Friend Class Implementation
    Implements IImpliedReadOnly

    Private someNumber_Renamed As Integer = 0
    Private ReadOnly Property IImpliedReadOnly_SomeNumber() As Integer Implements IImpliedReadOnly.SomeNumber
        Get
            Return SomeNumber
        End Get
    End Property
    Public Property SomeNumber() As Integer
        Get
            Return someNumber_Renamed
        End Get
        Set(ByVal value As Integer)
            someNumber_Renamed=value
        End Set
    End Property
End Class

关于c# - VB相当于C#“属性(property)违抗”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19194378/

10-12 19:19