方法一:
private Tab InternalGetTab(ArrayList tabs, string reference)
{
reference = reference.ToLower();
if(tabs == null) return null; foreach(Tab t in tabs)
{
if(t.reference.ToLower() == reference)
{
return t;
}
Tab tb = InternalGetTab(t.tabs, reference);
if(tb != null) return tb;
} return null;
}方法二:
public Tab GetTab(string reference)
{
if(reference == null || reference == "")
{
return (Tab)tabs[0];
} return InternalGetTab(tabs, reference);
}
我是菜鸟:<----------------------------------------问题1:把InternalGetTab方法的代码直接加到GetTab方法里面可以吗?如果可以怎么写???问题2:如果不可以合并,给我说说理由,或者讲讲分开写的好处,麻烦各位了!谢谢!!

解决方案 »

  1.   

    1:可以,如下:(如果你肯定这个[tabs]没有问题的话)
    public Tab GetTab(string reference)
    {
    if(reference == null || reference == "")
    {
    return (Tab)tabs[0];
    }
             reference = reference.ToLower(); if(tabs == null) return null; foreach(Tab t in tabs)
    {
    if(t.reference.ToLower() == reference)
    {
    return t;
    }
    Tab tb = InternalGetTab(t.tabs, reference);
    if(tb != null) return tb;
    } return null;
    }
      

  2.   

    2:分开可以减小粒度
    比如说,我还有一个方法,传递了一个Int
    这样就不用重新写一大堆代码了
    public Tab GetTab(int reference)
    {
    if(reference == null|| reference == 0)
    {
    return (Tab)tabs[0];
    } return InternalGetTab(tabs, reference.ToString());
    }
      

  3.   

    Sorry,我都没有看清楚你的第一个方法是一个递归:)
      

  4.   

    不能放在一起,因为InternalGetTab这个方法是递归调用的。
      

  5.   

    你这两个方法是不一样的
    第二个方法过虑了null和""的情况,默认返回tags[0]
    但是第一个方法
    null的情况是返回null的