C#接口行为的VB等价物

C#接口行为的VB等价物,c#,.net,vb.net,C#,.net,Vb.net,在C#中,有可能不受此影响: interface IImpliedReadOnly { int SomeNumber { get; } } class Implementation : IImpliedReadOnly { private int someNumber = 0; public int SomeNumber { get { return this.someNumber; } set { this.someNumbe

在C#中,有可能不受此影响:

interface IImpliedReadOnly
{
    int SomeNumber { get; }
}

class Implementation : IImpliedReadOnly
{
    private int someNumber = 0;

    public int SomeNumber
    {
        get { return this.someNumber; }
        set { this.someNumber = value; }
    }
}
但是我在VB中找不到一种等效的方法来实现这一点。 如果我将接口中的属性设置为只读,那么实现类必须匹配这些访问权限,并将属性声明为只读,而不是像C#中那样实现getter和setter

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

现在试试这个

Interface IImpliedReadOnly
ReadOnly Property SomeNumber() As Integer
End Interface
Class Implementation
Implements IImpliedReadOnly
Private m_someNumber As Integer = 0
Public Property SomeNumber() As Integer Implements IImpliedReadOnly.SomeNumber
    Get
        Return m_someNumber
    End Get
    Set
        m_someNumber = value
    End Set
End Property
End Class
您的代码在C中工作,因为C支持隐式接口实现,VB.NET只支持显式接口实现。

如果使用显式接口实现对C#示例进行以下改编,则会出现以下错误:

代码:

错误:

错误1“Test.IImpliedArdorOnly.SomeNumber.set”不添加访问器 在接口成员“Test.iImpliedArderOnly.SomeNumber”中找到


实际上,您可以使用以下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

将返回值1替换为返回值m_someNumber@Rony:您所做的只是演示Pharap询问的问题。@Pharap是的,这不是您的代码。我想向您展示,如果使用显式接口实现,C#和VB.NET的行为方式是相同的。
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