C# 什么';这是“什么?”`1“;对于从反射/CodeDom/CLR发送的类内名称?

C# 什么';这是“什么?”`1“;对于从反射/CodeDom/CLR发送的类内名称?,c#,.net,generics,clr,types,C#,.net,Generics,Clr,Types,我记不清在什么地方看到过这个奇怪的`1(单勾号和数字1)出现在类名旁边,但它是在调试时检查变量值时显示的,最近出现在对的回答中 我很好奇:这是从哪里来的,为什么会出现?这是一个带有1个类型参数的泛型类型 例如,List是 System.Collections.Generic.List`1 而字典是 System.Collections.Generic.Dictionary`2 这允许通过类型参数的数量重载泛型类型。这是符合CLS的类名中泛型类型参数的数量。它是必需的,因为类型可以在参数数量上

我记不清在什么地方看到过这个奇怪的
`1
(单勾号和数字1)出现在类名旁边,但它是在调试时检查变量值时显示的,最近出现在对的回答中


我很好奇:这是从哪里来的,为什么会出现?

这是一个带有1个类型参数的泛型类型

例如,
List

System.Collections.Generic.List`1
字典

System.Collections.Generic.Dictionary`2

这允许通过类型参数的数量重载泛型类型。

这是符合CLS的类名中泛型类型参数的数量。它是必需的,因为类型可以在参数数量上重载;e、 g:

class Foo { }
class Foo<T1> { }
class Foo<T1, T2> { }

请注意,虽然这是CLS提供程序要求,但不是CLR要求或限制。就CLR本身而言,泛型类型可以有任何名称,但任何两个类型都不能有相同的完全限定名称。因此,需要采用反勾绞方案。

+1 Yikes!快了6秒——这是我见过的两个答案最接近的一个!打得好…@Andrew:我想我被Jon以3秒的优势击败了。让Jon来保持记录:)所以就决定作为惯例?奇怪的是,你能用♠ 一个类名中的角色,但不是卑微的、普通的、单身的滴答声哦,我想你欠安德鲁一杯可乐;)
class Foo { }
class Foo<T1> { }
class Foo<T1, T2> { }
Foo
Foo`1
Foo`2