【问题标题】:What does the `1 or `2 suffix mean for classes created by Microsoft?`1 或 `2 后缀对于 Microsoft 创建的类意味着什么?
【发布时间】:2011-10-25 09:27:22
【问题描述】:

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

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

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

我还在codeplex repository of ASP.NET MVC中找到了其他类似命名的类/文件

【问题讨论】:

标签: .net asp.net-mvc coding-style


【解决方案1】:

表示泛型参数。例如看看这个反射代码:

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

【讨论】:

  • 特别是它显示了泛型类型参数的个数
【解决方案2】:

在 .NET 中这是有效的:

class X<T>
{
}

class X<T, U>
{
}

泛型参数的编号“改变”了类的名称。所以你看到的数字是参数的数量(用更简单的词:类/接口/结构可以在泛型参数的数量上“重载”,所以你可以有IEnumerableIEnumerable&lt;T&gt;。)

这些类将被称为 X`1X`2,而您将拥有

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

请注意,泛型参数的 name 不会“更改”类的名称。在前两个定义之后,这个将是无效的:

class X<U>
{
}

【讨论】:

    【解决方案3】:

    官方功能说明是:

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

    如您所见,类型为IDictioray&lt;,&gt; Th '2 是对具有 2 种类型的泛型的文本描述。 List'1 例如是一个 List

    【讨论】:

      猜你喜欢
      • 2014-12-24
      • 2020-10-12
      • 2013-01-16
      • 2016-01-02
      • 2011-09-07
      • 2018-04-21
      • 1970-01-01
      • 2021-05-17
      • 1970-01-01
      相关资源
      最近更新 更多