2

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 でこれを行う同等の方法が見つかりません。インターフェイスでプロパティを ReadOnly にすると、C# のように getter と setter を実装できるのではなく、実装クラスがこれらのアクセス権に一致し、プロパティを ReadOnly として宣言する必要があります。

これを回避する方法はありますか?そうでない場合、なぜVBはそれを許可しないのですか?

4

3 に答える 3

1

実際には、次の 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
于 2013-10-05T20:07:04.050 に答える
0

今これを試してください...

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
于 2013-10-05T05:40:48.747 に答える