VB相当于c#"属性反抗"

Pha*_*rap 3 .net c# vb.net

在C#中,有可能逃脱这个:

interface IImpliedReadOnly
{
int SomeNumber {get;}
}
class Implementation : IImpliedReadOnly
{
private int someNumber = 0;
public int SomeNumber {get{return someNumber;}set{someNumber=value;}}
}
Run Code Online (Sandbox Code Playgroud)

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

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

kma*_*zek 8

您的代码在C#中工作,因为C#支持隐式接口实现,VB.NET仅支持显式接口实现.

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

码:

interface IImpliedReadOnly
{
    int SomeNumber { get; }
}
class Implementation : IImpliedReadOnly
{
    private int someNumber = 0;
    int IImpliedReadOnly.SomeNumber
    {
        get { return someNumber; }
        set { someNumber = value; }
    }
}
Run Code Online (Sandbox Code Playgroud)

错误:

错误1'Test.IImpliedReadOnly.SomeNumber.set'添加了在接口成员'Test.IImpliedReadOnly.SomeNumber'中找不到的访问者