泛型类型的数据协定名称
确定泛型类型的数据协定名称具有特殊的规则。这些规则有助于避免在同一泛型类型的两个封闭式泛型之间发生数据协定名称冲突。
默认情况下,泛型类型的数据协定名称是该类型的名称后跟随字符串“Of”,后面跟随泛型参数的数据协定名称,后面跟随使用泛型参数的数据协定命名空间计算的哈希值。哈希值是作为唯一标识数据片段的“指纹”的数学函数的计算结果。当所有的泛型参数都是基元类型时,将忽略哈希值。
有关示例,请参见以下示例中的类型。
在此示例中,Drawing<Square,RegularRedBrush> 类型具有数据协定名称“DrawingOfSquareRedBrush5HWGAU6h”,其中“5HWGAU6h”是“urn:shapes”和“urn:default”命名空间的哈希值。Drawing<Square,SpecialRedBrush> 类型具有数据协定名称“DrawingOfSquareRedBrushjpB5LgQ_S”,其中“jpB5LgQ_S”是“urn:shapes”和“urn:special”命名空间的哈希值。请注意,如果不使用哈希值,则这两个名称将完全相同,因此会发生名称冲突。
这个两个泛型的命名空间怎么就冲突了呢?来自微软MSDN:https://msdn.microsoft.com/zh-cn/library/ms731045(v=vs.90).aspx
那个两个泛型类名字不一样的啊。