las siguientes obras en C#:¿Por qué debe una propiedad de implementación en VB.NET tener especificadores 'ReadOnly' que coincidan?
interface I
{
int X { get; }
}
class C : I
{
public int X
{
get { ... }
set { ... }
}
}
El siguiente no funciona en VB.NET:
Interface I
ReadOnly Property X As Integer
End Interface
Class C
Implements I
Public Property X As Integer Implements I.X
Get
...
End Get
Set(value As Integer)
...
End Set
End Property
End Class
El mensaje de error Implementing property must have matching 'ReadOnly' or 'WriteOnly' specifiers
es bastante explica por sí mismo, así que saben lo que está mal aquí. Tampoco es un gran problema, porque es bastante fácil evitar esta limitación.
Tengo curiosidad, sin embargo: ¿Alguien sabe por qué los diseñadores de VB decidieron tratar este caso de manera diferente que en C#?
No veo un solo archivo en su propiedad en la versión C de la interfaz? – Nikki9696
@ Nikki9696: la falta de un setter en la versión C# es el equivalente, básicamente. –
@ Nikki9696 Eso está implícito. La diferencia es que no necesita serlo. Pero, Heinzi, explícitamente lo especifica en la versión de la interfaz VB.NET, así que esa es una gran diferencia. –