任何具有返回值的方法或函数必须具有返回值或抛错,否则就出错。
上面的代码改成:public string GetIdStr() //把似有成员变量_id转换为字符串并返回
  {
    StringBuilder s = new StringBuilder(25);
  foreach (bool b in _id)
  {
     s.Append(b ? "1" : "0");
     //放在这里是不能确定GetIdStr()有返回值的
  }
    return s.ToString();
  }

解决方案 »

  1.   


      public string GetIdStr() //把似有成员变量_id转换为字符串并返回
      {
      StringBuilder s = new StringBuilder(25);
      foreach (bool b in _id)
      {
      s.Append(b ? "1" : "0");
      
      }
       return s.ToString();//将这句提到外边 
                           //原因:当_id没有值时,代码就不会走进foreach语句,此方法就没有retrun值
      }
      

  2.   

    public string GetIdStr() //把似有成员变量_id转换为字符串并返回
      {
        StringBuilder s = new StringBuilder(25);
      foreach (bool b in _id)
      {
         s.Append(b ? "1" : "0");
         //放在这里是不能确定GetIdStr()有返回值的
      }
        return s.ToString();
      }
      

  3.   

    public string GetIdStr() 
      {
      StringBuilder s = new StringBuilder(25);
      foreach (bool b in _id)
      {
      s.Append(b ? "1" : "0");
      } 
     return s.ToString();
      }
      

  4.   

     public string GetIdStr() //把似有成员变量_id转换为字符串并返回
      {
          StringBuilder s = new StringBuilder(25);
          foreach (bool b in _id)
          {
              s.Append(b ? "1" : "0");
              break;
          }
          return s.ToString();
      }
      

  5.   

    public string GetIdStr()  
      {
      StringBuilder s = new StringBuilder(25);
      foreach (bool b in _id)
      {
      s.Append(b ? "1" : "0");
      }  
     return s.ToString();
      }
      

  6.   

    public string GetIdStr()   
      {
      StringBuilder s = new StringBuilder(25);
      foreach (bool b in _id)
      {
      s.Append(b ? "1" : "0");
      }   
     return s.ToString();
      }
      

  7.   

    return s.ToString();
    放到最后面
      

  8.   

    写一个简单的过程:public int GetNumber(int a)
    {
        if(a > 0)
            return a;
    }咋看起开上面的逻辑没有任何问题,在 C 语言里这是完全正确的,但 C# 语言很严谨,它不允许含糊其辞。具体分析一下。此过程的本意为传入一个参数,如果参数值大于零则返回该参数值。但过程中只处理了参数值大于零的情况,其他情况并没有做任何处理,所以 VS 编译器认为在反面情况下也应该有一个返回值,否则就是所谓的“并非所有的代码路径都返回值”错误产生了。
      

  9.   

     public string GetIdStr() 
      {
          StringBuilder s = new StringBuilder(25);
          foreach (bool b in _id)
          {
             s.Append(b ? "1" : "0");
           }
             return s.ToString();
      }