开放、封闭、有界和无界通用类型

3

我已经阅读了很多关于此的文章,但我仍然不确定我是否完全理解了这些定义。

以下是我认为不同术语的示例。我是否理解得正确,还是我仍然不理解这些概念?谢谢

Array<T TArray> - unbound and open.
Array<int> - bound and closed.
Array<Array<T TArray> - bound and open.
Array<Array<int>> - bound and closed.
1个回答

5

未绑定(Unbound)的意思类似于typeof(Dictionary<,>)。未绑定类型仅在反射中有用,并且只能在typeof()中使用,而不能在其他任何上下文中使用。

所有未绑定类型都是封闭类型,"未绑定和开放"的组合是不可能的。

假设T是当前类/方法的类型参数:

Dictionary<,> - unbound and closed
Dictionary<string, int> - constructed and closed
Dictionary<int, T> - constructed and open
Dictionary<string, List<T>> - constructed and open
NonGenericClass - bound and closed

请注意,List<Dictionary<,>> 这样的类型是不存在的 - 未绑定的类型不能用作类型参数,只能直接在 typeof() 中使用。一个类型要么是未绑定的,要么是完全绑定的。如果一个类型是未绑定的,就没有地方可以引用到类型参数,因此“未绑定和开放”的组合是不可能的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接