【问题标题】:How .NET collections and generics works?.NET 集合和泛型如何工作?
【发布时间】:2010-11-26 06:58:02
【问题描述】:

我是一名实习软件工程师,我对集合和泛型进行了自学,并向我的 TL 报告。他建议我也研究这些东西。

特别是在泛型中,如何为泛型类型定义内存,IL 和 CLR 如何为泛型工作?

泛型过度收集或过度装箱拆箱的性能?

我用谷歌搜索但得到的答案有限。可以请任何人解释或给出任何问题(链接)来研究。

谢谢。

【问题讨论】:

  • 但是为什么呢?内部可能会改变。这就是您使用定义明确的库的原因。
  • 我认为,OP 意味着泛型与原始集合类型有何不同。
  • @srinivas... 是的,仅此而已。对于任何泛型类型 的泛型分配内存,T 可能是任何东西。

标签: c# .net performance


【解决方案1】:

.NET 公共语言运行时泛型的设计和实现 Andrew Kennedy 和 Don Syme 讨论了在 CLR 上实现泛型背后的理论。 http://research.microsoft.com/pubs/64031/designandimplementationofgenerics.pdf

源代码可用于 .NET Framework,它允许您通过 System.Collections.Generic 进行调试。 http://weblogs.asp.net/scottgu/archive/2008/01/16/net-framework-library-source-code-now-available.aspx

如果您想了解更深入的信息,可以阅读 Rotor(又名共享源公共语言基础结构)源代码,它是 .NET Framework 的“可用源”部分。 http://www.microsoft.com/downloads/en/details.aspx?FamilyID=8c09fd61-3f26-4555-ae17-3121b4f51d4d&displaylang=en

另一个实现是 Mono 项目。他们有一个通用集合的实现,Mono 代码库是开源的。 http://www.mono-project.com/Main_Page

【讨论】:

    【解决方案2】:

    查看 .NET 内部的一个非常好的工具是 Reflector。它显示了许多 .NET 类(包括集合)的完整 C#(或 VB 或 IL)代码。

    【讨论】:

    • 它不适用于 Visual Studio 2010 速成版。我先用的是试用版。
    • 它独立于 vs.net 工作,但是,有一个插件(您必须购买)集成到 vs.net 中,允许您在无需访问源代码的情况下调试第三方程序集。我推荐你使用Reflector,它是必备的
    • 我很抱歉我的第一条评论。你说得对,它独立工作。我现在明白了,谢谢。
    猜你喜欢
    • 2013-05-03
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 2017-12-24
    • 2017-11-16
    • 1970-01-01
    相关资源
    最近更新 更多