我做的一个方法有返回值,但是我想当它满足一定的条件就退出这个过程,怎么写?
如:下面的这个方法返回一个Hashtable,当他是空的时候我想叫他退出过程,怎么写?
    protected Hashtable SessionInforMation()
    {
        Hashtable ht = new Hashtable();
        string ProjectName = "通信制高校学习支援系统(II)";//测试
        string ProjectDate = "2006-10-11";//request传过来的值
        ListItem li = IsDayAtDate(ProjectDate);
        if (li.Text.Trim().Equals(""))
        {
            //就是这里,不能直接用return;的。
        }
        else
        {
            string[] Start_End_Date = li.Text.Split('~'); //把每次得到的ListboBox_Date内容以’~‘切成两段
            string StartDate = Start_End_Date[0];//赋值
            string EndDate = Start_End_Date[1];//赋值            ht.Add("projectname", ProjectName);
            ht.Add("projectstartdate", StartDate);
            ht.Add("projectenddate", EndDate);
        }
        return ht;
    }

解决方案 »

  1.   

    //就是这里,不能直接用return;的。
    ======================
    为什么不能直接return呢?
    你当然不能写:
    return;
    你应该写:
    return ht;或return null;//ht此时也为null
      

  2.   

    不能return;
    return null;总可以吧,哈哈
      

  3.   

    一定得返回个东西啊。return null 或者一个HashTable
      

  4.   

    这是一个方法或者称之为函数(C/C++习惯),既然你选择了有返回值,这就决定了一旦代码进入它,返回的时候必须带值,如果不能返回ht,那你就如楼上的有些朋友说的那样,返回一个null。除此之外,还有一条路提供你选择,那就是throw new Exception();
      

  5.   

    听了楼上的讲解恍然大物
    其实这里返回一个空的ht和NULL都是多此一举的,应为我在这里就是捕捉这个NULL值,如果在返回NULL值还有什么意思呢?对吧。
    既然必须返回一个值那就是说不能退出这个过程了,对吧?
    那我throw new Exception();这样能退出一个过程吗?
      

  6.   

    protected Hashtable SessionInforMation()
        {
            Hashtable ht = new Hashtable();
            string ProjectName = "通信制高校学习支援系统(II)";//测试
            string ProjectDate = "2006-10-11";//request传过来的值
            ListItem li = IsDayAtDate(ProjectDate);
            if (li.Text.Trim().Equals(""))
            {
                return ht;
               //就是这里,不能直接用return;的。
            }
            else
            {
                string[] Start_End_Date = li.Text.Split('~'); //把每次得到的ListboBox_Date内容以’~‘切成两段
                string StartDate = Start_End_Date[0];//赋值
                string EndDate = Start_End_Date[1];//赋值            ht.Add("projectname", ProjectName);
                ht.Add("projectstartdate", StartDate);
                ht.Add("projectenddate", EndDate);
                return ht;
            }
            
        }
    将那个return ht; 移上去就解决啦.
      

  7.   

    用return null;最好,也最安全....
      

  8.   

    你是想退出这个过程还是退出整个程序啊?
    如果只是退出这个过程的话,用return null 显然就已经达到目的了啊...
      

  9.   

    如果是退出程序,那就直接 Application.Exit();
      

  10.   

    不能用return null 应为我下面还用用到hashtable中的值  空值就会抱错
      

  11.   

    如果是退出程序,那就直接 Application.Exit();
    ===================================================
    我的Application怎么没Exit()方法?
      

  12.   

    你的是什么程序?
    WinForm还是控制台的?
      

  13.   

    WinForm的用:
    Application.Exit();
    控制台程序用:
    System.Environment.Exit(0);楼主试下看...
      

  14.   

    纠正一下:
    WinForm也可以用System.Environment.Exit(0);
    且用这个可以将程序结束得更干净...
      

  15.   

    不好意思,下午断了网...用这句直接退出:
    Response.Write("<script>window.opener=null;window.close();</script>");
    用这句还有"是否确认退出的提示":
    Response.Write("<script>window.close();</script>");楼主试试看....
      

  16.   

    如果  li.Text.Trim().Equals("")  是你所不希望出现的,那么抛出一个异常:
    throws new Exception( "XXX 不能为空" );如果 li.Text.Trim().Equals("") 属性于正常行为那么就要重新考虑一下你类的设计了
      

  17.   

    这个只能返回一个空的Hashtable
    li.Text.Trim(). 这个可以用在接收一个参数的方法,
      

  18.   

    return;什么都不带!!就return;是正解!!
      

  19.   

    哦 !!没看请!!!!throws new Exception 就可以了!!晕!!
      

  20.   

    我也觉得是return;什么都不带!!就return;是正解!!
      

  21.   

    无聊.
    用 return null.
    用到的时候,if(null!=SessionInforMation())
    {
        //你要做的
    }
    LZ死钻牛角尖了
      

  22.   

    楼主虽然说了不能return null,但我还要说 return null是非常好的做法,比抛出一个异常好。
    后面对那个ht 的处理是后面程序的事情,既然程序逻辑说明了可能不会返回正确的Hashtable 的值,那楼主就应该在后面的程序中加上处理,比如如果返回值是null该怎么办...
      

  23.   

    楼主正解。 Return null;然后在后面的程序判断是否返回 null。