gpt4 book ai didi

.net - 为什么接口(interface)允许在接口(interface)中声明状态?

转载 作者:行者123 更新时间:2023-12-03 18:14:14 24 4
gpt4 key购买 nike

根据 Why are we not allowed to specify a constructor in an interface? 的答案,

Because an interface describes behaviour. Constructors aren't behaviour. How an object is built is an implementation detail.



如果 interface描述行为,为什么 interface允许声明状态?
public interface IStateBag
{
object State { get; }
}

最佳答案

嗯 - 它不是真正的状态。如果接口(interface)允许您声明字段,那么这就是状态。由于属性只是 get 和 set 方法的语法糖,因此它是允许的。

这是一个例子:

interface IFoo
{
Object Foo { get; set; }
}

之前的接口(interface)被编译为以下 IL:
.class private interface abstract auto ansi IFoo
{
.property instance object Foo
{
.get instance object IFoo::get_Foo()
.set instance void IFoo::set_Foo(object)
}
}

如您所见,即使是接口(interface)也将属性视为方法。

关于.net - 为什么接口(interface)允许在接口(interface)中声明状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/689839/

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