我是C#的新手,并试图了解为什么下面的代码不起作用。我试图创建一个非静态的自定义类HtmlRequest,因此可以使用HtmlRequest someVar = new HtmlRequest();
返回sb持有该值,但它没有返回到hmtmlString
行上的htmlString = htmlReq.getHtml(uri)
。
我尝试在公共类HtmlRequest之后放置Get {code ... return sb;}但是无法获得正确的语法
public partial class MainWindow : DXWindow
{
private void GetLinks()
{
HtmlRequest htmlReq = new HtmlRequest();
Uri uri = new Uri("http://stackoverflow.com/");
StringBuilder htmlString = new StringBuilder();
htmlString = htmlReq.getHtml(uri); //nothing returned on htmlString
}
}
public class HtmlRequest
{
public StringBuilder getHtml(Uri uri)
{
// used to build entire input
StringBuilder sb = new StringBuilder();
// used on each read operation
byte[] buf = new byte[8192];
// prepare the web page we will be asking for
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
// execute the request
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// we will read data via the response stream
Stream resStream = response.GetResponseStream();
string tempString = null;
int count = 0;
Do
{
// fill the buffer with data
count = resStream.Read(buf, 0, buf.Length);
// make sure we read some data
if (count != 0)
{
// translate from bytes to ASCII text
tempString = Encoding.ASCII.GetString(buf, 0, count);
// continue building the string
sb.Append(tempString);
}
}
while (count > 0); // any more data to read?
return sb;
}
}
如果我在return sb;
上放置一个断点,那么该变量是正确的,但不会返回它。
这可能是非常明显的事情,有人可以解释为什么它不起作用以及如何解决它?
谢谢
答案 0 :(得分:1)
不需要这样:
StringBuilder htmlString = new StringBuilder();
htmlString = htmlReq.getHtml(uri);
这足以说:
StringBuilder htmlString = htmlReq.getHtml(uri);
你不得不定义任何东西。没有什么意思是“无效”,“垃圾”,什么? htmlString是以前的对象吗?或者功能根本不会返回?它是什么?
答案 1 :(得分:1)
尝试使用该值而不是立即退出该方法。如果未使用优化的构建,则不会保存返回值。