0

在 C# 中,似乎以下方法有效,它允许您调用 Streamreader.readline() ,然后在下一个循环中访问同一行。

   string line;
    double score = 0;
    count = 0;
    while ((line = sr.ReadLine()) != null)
    {
        score += double.Parse (line);
        count++;
    }
    averageScore = (double)inValue / count;

这在 vb.net 中不起作用,即使使用了我尝试过的所有转换器。

这个完全炸毁并抛出“找不到页面” http://converter.telerik.com/

这个:

http://www.developerfusion.com/tools/convert/csharp-to-vb/?batchId=3356dd81-818a-43d1-8c23-be584e40d15e 结果:

Dim line As String
Dim score As Double = 0
count = 0
While (InlineAssignHelper(line, sr.ReadLine())) IsNot Nothing
    score += Double.Parse(line)
    count += 1
End While
averageScore = CDbl(inValue) / count

InlineAssignHelper 是我没有的。

4

2 回答 2

2

如果您有文件名,而不仅仅是一个流,您可以使用System.IO.File.ReadLines最简洁的方式:

Dim score As Double = 0
count = 0

For Each line In File.ReadLines(filename)
    score += Double.Parse(sr.ReadLine())
    count += 1
Next

averageScore = CDbl(inValue) / count

或使用 LINQ:

Dim averageScore = File.ReadLines(filename).Average(AddressOf Double.Parse)
于 2012-10-26T14:28:45.580 回答
0

使用带有退出语句的 Do-Loop,如下所示:

    Do
        Dim line = sr.ReadLine()
        If line Is Nothing Then Exit Do
        score += Double.Parse(line)
        count += 1
    Loop

请注意这样做比接受的答案的优势,它非常依赖内存使用,并且不需要整个文件适合内存。

于 2012-10-26T14:30:36.343 回答