本帖最后由 pthiiu 于 2010-11-16 21:39:36 编辑

解决方案 »

  1.   


    void functionB(object obj)
    {
      if( obj == null) return;
      foo(obj);
      obj.Bar();
      // some methods about obj.
      ...
      ..
    }
    看看这个怎么样?
      

  2.   

    第二种,少一些if else ,代码更易读
      

  3.   

    其实两种方法从运行速度上来说都可以,第一种是就执行,不是就执行else,第二种,是就直接返回,不是就继续往下执行,显然两种方法,按自己的习惯使用即可。
      

  4.   

    典型的防御式编程,肯定是第二种了,易读的多。你现在是一个参数,如果参数多了,你看看第一种会出现什么情况呢?var func(object obj1,object obj2,object obj3)
    {
        if(obj1 != null)
        {
             if(obj2 != null)
             {
                  if(obj3 != null)
                  {
                        
                  } {Console.WriteLine("Object is null.");}         }{Console.WriteLine("Object is null.");}
        }
        {
            Console.WriteLine("Object is null.");
        }
    }
    //繁锁吧如果用防御式,提前返回,就没有这么多嵌套了
      

  5.   

    我一直用第二种! 这些是个人喜好!用第一种不容易出错!用第二种 的缺点就是怕忘记写 那个return.我刚学时,忘记过!第二种的优点:有多个嵌套if 时,看起来 嵌套层数要少些,少一个 {}!当然有些情况是只能用第一种的:
    if(){
    ...
    }else{
    ...
    }..... 此还有代码要执行 ,前面不能return!  虽然C# 也支持goto,都是都不推荐使用这个方式!