对于 Microsoft 创建的类,“1”或“2”后缀意味着什么?

发布于 2024-12-12 02:22:32 字数 391 浏览 0 评论 0原文

我最近注意到 ASP.NET 错误堆栈跟踪中的以下行

System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +264

IDictionary`2 中的 `2 是什么意思?

我还在 ASP.NET MVC 的 codeplex 存储库

I recently noticed the following line in an ASP.NET error stack trace

System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +264

What does the `2 in IDictionary`2 mean?

I also found other classes/files named like that in the codeplex repository of ASP.NET MVC

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

得不到的就毁灭 2024-12-19 02:22:32

它用于指示通用参数。例如,看一下这个反射代码:

var type = typeof(Dictionary<string, string>).GetInterface("IDictionary`2");

It's to indicate generic parameters. For example take a look at this reflection code:

var type = typeof(Dictionary<string, string>).GetInterface("IDictionary`2");
楠木可依 2024-12-19 02:22:32

在 .NET 中,这是有效的:

class X<T>
{
}

class X<T, U>
{
}

通用参数的数量“更改”类的名称。所以你看到的数字是参数的数量(用更简单的话来说:类/接口/结构可以在泛型参数的数量上“重载”,所以你可以有 IEnumerableIEnumerable< ;T>。)

这些类将被称为 X`1X`2,并且您会

typeof(X<>).Name == "X`1";
typeof(X<,>).Name == "X`2";

注意到名称 通用参数不会“更改”类的名称。前面两个定义之后,这个就无效了:

class X<U>
{
}

In .NET this is valid:

class X<T>
{
}

class X<T, U>
{
}

The number of the generic parameters "changes" the name of the class. So the number you see is the number of parameters (to use simpler words: classes/interfaces/structs can be "overloaded" on the number of generic parameters, so you can have IEnumerable and IEnumerable<T>.)

These classes would be called X`1 and X`2, and you would have

typeof(X<>).Name == "X`1";
typeof(X<,>).Name == "X`2";

Note that the name of the generic parameters doesn't "change" the name of the class. After the previous two definitions, this one would be invalid:

class X<U>
{
}
时光病人 2024-12-19 02:22:32

官方的函数描述是:

public override object Execute(ControllerContext controllerContext, IDictionary<string, object> parameters)

如您所见,类型为 IDictioray<,> Th '2 是采用 2 个类型的泛型的文本描述。例如,List'1是List<>。

The official function description is:

public override object Execute(ControllerContext controllerContext, IDictionary<string, object> parameters)

As you can see the type is IDictioray<,> Th '2 is the textual description of a generic taking 2 Types. List'1 for example is a List<>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文