我已经尝试过谷歌,并在此处进行预先搜索。没有运气。
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
我得到一个'并非所有代码路径都返回一个值'错误。我确信我可以解决这个问题,但我想知道如何解决这个问题以备将来参考。
答案 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
}