Call Hierarchy是Visual Studio 2010中的一个新的特性,它用来查看函数之间的调用层次关系。它跟原来的Find All References功能相似,但是,更加强调调用层次,而且能够比后者提供更多的信息。
调用方法:
我们首先创建一个示例程序(C#,Console Application):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(fun1().ToString());
}
private static int fun1()
{
return fun2();
}
private static int fun2()
{
return fun3();
}
private static int fun3()
{
return 100;
}
private static int fun4()
{
return fun2() * 2;
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(fun1().ToString());
}
private static int fun1()
{
return fun2();
}
private static int fun2()
{
return fun3();
}
private static int fun3()
{
return 100;
}
private static int fun4()
{
return fun2() * 2;
}
}
}
在fun2上右击,在上下文菜单中选择View Call Hierarchy:
然后,一个叫“Call Hierarchy”的工具窗口就出现在了VS底端,把fun2作为根节点显示。
打开“+”,Call Hierarchy会在后台对整个Solution里进行搜索,然后,把找到的节点添加到当前节点以下(例如fun1(),fun4()之类的)。于是,我们就看到所有调用fun2的函数(Calls To)和fun2所调用的函数(Calls From)。
点击具体的函数,可以看到函数所在的具体位置;双击右边的Call Sites行,即可将当前光标导航到对应位置。
同时,右击函数名,还可以把任意出现的函数添加为新的根节点,删除节点按钮可以移除根节点:
通过Call Hierarchy,我们可以更加清晰的去理解程序之间调用关系,帮助我们更多好的阅读程序。
Call Hierarchy在VS 2010 CTP里已经实现,大家已经可以先玩玩。用VB的朋友可能还要稍等上一阵子,期望在Beta1或者Beta2阶段,这个功能在VB中得以实现。
Little knowledge is dangerous.