2013-03-01 79 views
3

与LINQ一起工作时,我遇到了一个异常,它用一些表达式显示`1LINQ中'1代表什么?

例如,在一个堆栈跟踪,我声明是这样的:

System.Linq.Table`1.Enumerable(); 

此外,在一些匿名的语句我就翻过一样。我的一个小辈问我这件事,但我无法给他提供满意的答案。所以我需要知道。 `1代表什么?

+11

\在.net'1所述的通用方法,这是一个普通类型1种类型参数。例如Dictionary \'2可能是一个字典或任何其他类型,但有2个类型参数,如果你明白我的意思。 – 2013-03-01 19:26:44

回答

17

C#notates通用类型作为

System.Linq.Table<T> 

VB notates它们作为

System.Linq.Table(Of T) 

一个类型的对象上调用的ToString既不产生C#也不VB语法;它产生:

System.Linq.Table`1 

其中1表示类型参数的数量。

在C#中的类型,如:

Foo<T>.Bar<U> 

会产生串

Foo`1+Bar`1 
+1

“MSIL将它们标注为”听起来像是MSIL语言,其中的类型就是这样写的。我对此表示怀疑,因为如果是这样的话,MSIL如何区分'Foo .Bar '和'Foo.Bar '?在.NET中可能会有一些默认的字符串符号输出类似那样的泛型...虽然在测试时,它似乎是* not *'Type.FullName',它返回* Foo'1 + Bar'1 * Foo .Bar '和* Foo + Bar'2 *仅适用于'Foo.Bar '。 – 2013-03-01 19:34:53

+0

@ O.R.Mapper:好点,我忘记了Type.Fullname具有这种行为。我会更新帖子。 – 2013-03-01 19:38:10