从另一个类的方法返回一个变量

时间:2012-09-26 20:03:32

标签: c#

我是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;上放置一个断点,那么该变量是正确的,但不会返回它。 这可能是非常明显的事情,有人可以解释为什么它不起作用以及如何解决它?

谢谢

2 个答案:

答案 0 :(得分:1)

不需要这样:

StringBuilder htmlString = new StringBuilder();
htmlString = htmlReq.getHtml(uri);

这足以说:

StringBuilder htmlString = htmlReq.getHtml(uri);

你不得不定义任何东西。没有什么意思是“无效”,“垃圾”,什么? htmlString是以前的对象吗?或者功能根本不会返回?它是什么?

答案 1 :(得分:1)

尝试使用该值而不是立即退出该方法。如果未使用优化的构建,则不会保存返回值。