gpt4 book ai didi

c# - 为什么 C# 不允许泛型属性?

转载 作者:IT王子 更新时间:2023-10-29 04:19:23 26 4
gpt4 key购买 nike

我想知道为什么我不能像拥有泛型方法那样在非泛型类中拥有泛型属性。即:

public interface TestClass
{
IEnumerable<T> GetAllBy<T>(); //this works

IEnumerable<T> All<T> { get; } //this does not work
}

我读了@Jon Skeet 的 answer ,但这只是一个声明,很可能在规范中的某个地方。

我的问题是为什么实际上是这样?这个限制是否避免了一些问题?

最佳答案

从技术上讲,CLR 只支持泛型类型和方法,不支持属性,所以问题是为什么它没有添加到 CLR 中。对此的答案可能很简单:“人们认为它带来的 yield 不足以抵消成本”。

但更根本的是,它被认为没有带来任何好处,因为用类型参数化属性在语义上没有意义。 Car类可能有一个 Weight属性(property),但拥有 Weight<Fruit> 是没有意义的和一个 Weight<Giraffe>属性(property)。

关于c# - 为什么 C# 不允许泛型属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8620883/

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