只读并在Interface中只写自动属性

时间:2015-05-04 04:31:05

标签: c# properties interface

我读过自动实现的属性不能只读或只写。它们只能是可读写的。

然而,在学习界面时,我遇到了foll。代码,它创建只读/只写和读写类型的自动属性。那可以接受吗?

 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 个答案:

答案 0 :(得分:9)

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

声明接口IPointy需要属于byte的属性,名为Points,带有公共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; }
    }
}