【问题标题】:where is the method body of builtin assemblies methods [closed]内置程序集方法的方法体在哪里[关闭]
【发布时间】:2012-11-23 00:12:54
【问题描述】:

考虑以下代码:

int i = 0;        
private void AddValue()
{
    i++;
}

当我调用 AddValue 方法时,它有一些在 i 中加 1 的方法体。 现在考虑一下:

 ArrayList ar = new ArrayList();

当我调用 ar.Add(1) 时,它会在 ar 中添加对象 1。当我右键单击添加并按转到定义时,我看到了

public virtual int Add(object value);

没有这样的方法体在 ar 中添加 1 作为对象,即 ArrayList。 我的问题是 ArrayList.Add() 的方法体到底在哪里。当它似乎没有这样的 MethodBody 时,它到底是如何向 ArrayList 添加一个对象的。

【问题讨论】:

    标签: c# methods assemblies


    【解决方案1】:

    如果您查看代码选项卡的标题,它会显示[from metadata]。这不是您正在查看的实现,而是“在只读缓冲区中显示为 C# 源代码的元数据”。另见:Metadata as Source

    【讨论】:

    • 好的!那么实施在哪里。如何查看 ar.Add() 的源代码。有没有可能???如果可能的话怎么办?如果不可能,那为什么不可能呢???
    • @kashif 一个问号已经清楚地表明了一个问题。 ;-) 您可以使用反编译器查找 .NET 框架源代码,就像 heq 在另一个答案中建议的那样。你可以看看Telerik JustDecompile。为什么要查看 .NET 框架源代码? manual (MSDN) 清楚地描述了每个类、方法和枚举的作用,因此除非您确定在框架中遇到错误,否则通常不必查看其源代码。
    【解决方案2】:

    实现在 dll 中。您可以使用任何 .NET 反编译器来查看代码。有很多免费的反编译器,用搜索即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-10
      • 1970-01-01
      • 2013-04-13
      相关资源
      最近更新 更多