接口c#中的属性

Can*_*tin -3 c#

如果接口不应该在C#中具有属性,那么如何在接口中拥有属性,因为属性是属性的getter和setter?在类中我们有这个例子,我认为接口应该只有方法声明.

interface IKnownProgrammingLanguages
{
    string[] ProgrammingLanguages { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Rit*_*ave 5

属性只是一个很好看的函数声明.在糖的下面,它们看起来像这样:

interface IKnownProgrammingLanguages
{
    void SetProgrammingLanguages(string[] value);
    string[] GetProgrammingLanguages();
}
Run Code Online (Sandbox Code Playgroud)

接口不应该具有属性,因为实现类不能改变属性的行为 - 它们总是以相同的方式工作.但是每个实现类都可以定义SetProgrammingLanguagesGetProgrammingLanguages操作,这就是为什么允许它们,并且通常是有用的.