gpt4 book ai didi

c# - 非泛型类型的协变/逆变支持?

转载 作者:行者123 更新时间:2023-11-30 21:24:20 25 4
gpt4 key购买 nike

<分区>

我想知道为什么 C# 团队决定不支持非泛型的协变/逆变,考虑到它们可能同样安全。这个问题相当主观,因为我不希望团队成员做出回应,但有人可能具有我(和 Barbara Liskov)缺乏的洞察力。

让我们看看这个示例界面:

public interface ITest
{
object Property
{
get;
}
}

尽管完全安全(我们总是可以在不违反接口(interface)的情况下返回更具体的类型 - 在 C# 中不是,但至少在理论上是这样),但以下实现将失败。

public class Test : ITest
{
public string Property
{
get;
}
}

如果接口(interface)包含 setter,代码自然不会安全,但这不是限制整体实现的理由,因为这可以通过使用 out/in 来声明安全来指出,就像泛型一样。

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