在C#以下工作:为什么VB.NET中的实现属性必须匹配'ReadOnly'说明符?
interface I
{
int X { get; }
}
class C : I
{
public int X
{
get { ... }
set { ... }
}
}
下在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
错误消息Implementing property must have matching 'ReadOnly' or 'WriteOnly' specifiers
是不言自明的,所以我知道什么是错在这里。这也不是一个大问题,因为解决这个限制很容易。
我很好奇,但:有谁知道为什么VB设计师决定以不同于C#的方式处理这种情况?
我在界面的C版本中看不到您的属性中的只读属性? – Nikki9696
@ Nikki9696:基本上C#版本中缺少setter是等价的。 –
@ Nikki9696暗示。不同之处在于它不需要。但是,Heinzi,你明确地在VB.NET界面版本中指定它,所以这是一个非常大的差异。 –