接口中的只读和只写自动属性

3

我曾经了解到自动实现的属性不能只读或只写,它们只能是读写的。

然而,在学习接口时,我发现了以下代码,它创建了一个可读/仅写和读写类型的自动属性。这样做是否可行?

 public interface IPointy 
    {   
    // A read-write property in an interface would look like: 
    // retType PropName { get; set; }   
    //  while a write-only property in an interface would be:   
    // retType PropName { set; }  
      byte Points { get; } 
    } 
1个回答

9

这不是自动实现的。接口不包含实现。

它是一个声明,接口IPointy需要一个名为Pointsbyte类型属性,带有公共getter方法


只要有一个公共的getter方法,你可以以任何必要的方式来实现接口;可以通过自动属性:

public class Foo: IPointy
{
    public byte Points {get; set;}
}

请注意,setter 方法仍然可以是私有的:
public class Bar: IPointy
{
    public byte Points {get; private set;}
}

或者,您可以显式编写一个getter:

public class Baz: IPointy
{
    private byte _points;

    public byte Points
    {
        get { return _points; }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接