gpt4 book ai didi

c# - 属性 Getter/Setter 不是接口(interface)协定的一部分

转载 作者:太空宇宙 更新时间:2023-11-03 19:05:51 24 4
gpt4 key购买 nike

为什么 getter/setter 不是接口(interface)契约的一部分?例如:

public interface IFoo
{
int Id { get; }
}

class Foo : IFoo
{
public int Id { get; set; }
}

为什么即使接口(interface)声明不同,这里也允许有 setter?我在这里遇到的问题是不变性。实现我的接口(interface)的客户将被允许创建可变类型,我不希望这样做。我是否被迫退回到使用方法和只读字段?

最佳答案

要实现接口(interface),您必须至少提供它包含的方法。
您可以提供更多,(例如实现另一个接口(interface))。

您可以将 getter/setter 对视为方法 set_Id(int i)get_Id()
事实上,这就是它们在较低级别的 CLI 上建模的方式。

所以set_Id(int i)只是实现者提供的一个额外的方法,并没有什么你可以阻止他这样做。

关于c# - 属性 Getter/Setter 不是接口(interface)协定的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27820003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com