0

我在使用 StreamReader 对象的 c# 中遇到问题。我将 StreamReader 对象传递给函数,然后通读它以收集有关其内容的一些信息。一旦我通过代码传递它以收集信息,当我将它传递给后续函数时,我认为它是空的。

public DataScraper GetDataValues(StreamReader sr)
{

    DataScraper dsGd = new DataScraper();

    string line = string.Empty;
    int intCurrentLine = 0;
    int intLineAskingPrice = 0;
    int intLineHOADues = 0;
    int intLineTaxes = 0;
    while ((line = sr.ReadLine()) != null)
    {
        if (line.Contains("For Sale: $"))
            intLineAskingPrice = intCurrentLine;
        if (line.Contains(@"<span>HOA Fee</span>"))
            intLineHOADues = intCurrentLine - 1;
        if (line.Contains("<em>Annually:</em>"))
            intLineTaxes = intCurrentLine + 1;
        intCurrentLine++;
    }

    //<span>HOA Fee</span>
    dsGd.intAskingPrice = GetAskingPrice(sr, intLineAskingPrice);
    dsGd.intHOADues = GetHOADues(sr, intLineHOADues);
    dsGd.intTaxes = GetTaxes(sr, intLineTaxes);

    return dsGd;
}

有什么想法可以通过后续函数传入 StreamReader 对象并位于 StreamReader 的开头而不是结尾(如果这是我的代码实际发生的情况)?

4

1 回答 1

3

您可以将 的 设置PositionBaseStream0这仅在您underlying stream支持时才有效Position。我希望这不是你的情况。

public DataScraper GetDataValues(StreamReader sr)
{
  if(sr.BaseStream != null&&sr.BaseStream.CanSeek) sr.BaseStream.Position = 0;
  //remaining code
  //....
  //....
}
于 2013-08-25T05:41:16.470 回答