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 に答える