在while循环中返回字符串

时间:2015-07-14 06:09:56

标签: c#

我已经尝试过谷歌,并在此处进行预先搜索。没有运气。

    Dim htmldoc As mshtml.IHTMLDocument2 = wb.Document.DomDocument
    Dim captchaimg As mshtml.HTMLImg = htmldoc.all.item("cimage", 0)
    Dim imgRange As IHTMLControlRange = htmldoc.body.createControlRange()
    For Each img As IHTMLImgElement In htmldoc.images
        If img.nameProp = "captchaImage" Then
            imgRange.add(img)
            imgRange.execCommand("Copy", False, Nothing)
            Using bmp As Bitmap = Clipboard.GetDataObject().GetData(DataFormats.Bitmap)
                bmp.Save("c:\test.bmp")
            End Using
        End If
    Next

我得到一个'并非所有代码路径都返回一个值'错误。我确信我可以解决这个问题,但我想知道如何解决这个问题以备将来参考。

6 个答案:

答案 0 :(得分:2)

如果不满足while循环条件,您的方法会返回字符串吗?因此,在方法结束之前放置返回以确保您的方法始终返回字符串,此MSDN错误页面not all code paths return a value将进一步帮助您理解。

我相信示例代码只是为了显示问题,因为它对我没有多大意义。

public string MethodName() 
{
    //Some Code
    While(conditions) {
        //More Code
        string X;
        X = "string stuff";
        return X;
    }
    return "somestringifnotX";
}

答案 1 :(得分:1)

问题是编译器认为有一条路径在第一次遇到条件时不满足条件:

//Some Code
while(conditions)
{
  //More Code
  string X;
  X = "string stuff";
  return X;
}
.. Problem!
return "not found"; // or throw new Exception("I'm not supposed to be here")

您需要做的是在完全不满足conditions的情况下返回(或抛出!)。

答案 2 :(得分:1)

您收到错误是因为您尝试从while循环返回值,这是不可能的

如果你的while循环条件不满足没有值得到返回,这就是编译器给你错误的原因。

解决这个问题的方法是,在你运行的循环返回值的同时返回空字符串。

public string functionname
{
    while(conditions)
    {
      //More Code
      string X;
      X = "string stuff";
      return X;
    }
    return string.Empty;
}

答案 3 :(得分:1)

我认为你的意思是

 static void Main(string[] args)
    {

        for (int i = 0; i < MethodName().Count; i++ )
        {
            var result = MethodName()[i] as string;
            Console.WriteLine(result);
        }

        Console.ReadLine();
    }

    private static List<string> MethodName()
    {
        var items = new List<string>();

        while (Condition)
        {
            items.Add("SString to return");
        }

        return items;
    }

我希望它会有所帮助

答案 4 :(得分:0)

您的问题是,当您没有通过while循环时,您将不会返回任何内容

Class SomeClass
{
  public string MethodName()
  {
    //Some Code
    While(conditions)
    {
      //More Code
      string X;
      X = "string stuff";
      return X;
    }
    return "Nothing to return Actually";
    //OR
    Throw new Exception("Conditions where false");
  }
}

想象一下你的条件=假,而你从未进入过。这意味着你永远不会得到回报。另一方面,你的功能需要一个。当你不想要这种行为时,用return返回你的语句或抛出错误。

答案 5 :(得分:0)

public static string binarySearch(int [] dataArray, int dataDicari) 
{
      int first = 0;
      int last = list.length – 1;
      int mid;       

      while (first <= last)
      {
          mid = (first+last)/2;
          if (dataArray[mid] == dataDicari)
              return ......;               //ISIAN 1                        
          else if (dataArray[mid] < dataDicari) 
              first = mid + 1;
          else if (dataArray[mid] > dataDicari) 
              last = mid – 1;
      }

      return .....;    //ISIAN 2
}