首页 > 解决方案 > 什么是“膨胀型”?

问题描述

Unity 文档中,他们谈到了膨胀类型,例如:

字段值不能是泛型类型(膨胀类型)的特定特化。

这到底是什么意思?

标签: c#

解决方案


Mono 的文档,Unity 的术语很可能基于(Unity 内部使用 Mono),将其定义为类型实例的同义词,即具有分配给其泛型类型参数的具体类型的泛型类型:

术语

类型/方法实例化 == 类型/方法实例 == 膨胀类型/方法。

因此,在您从 Unity 文档中引用的句子中,听起来“膨胀类型”是一种更短的方式来表达“泛型类型的特定专业化”的整体性。

换句话说,字段值不能是具有提供类型参数的泛型类型。

如果我可能冒险猜测,这可能与您在尝试为任意 .NET 对象编写序列化/反序列化时经常遇到的典型困难有关 - 只要您使用非泛型类型,一切都很好并且GetType().FullName会给你完整的类名,可以在反序列化时再次解析。但是,一旦遇到泛型类型,GetType().FullName只会返回类型参数的数量,因此两者都List<string>List<int>变为"System.Collections.Generic.List`1",从那里您只需做一些额外的工作就可以返回原始类型。


推荐阅读