0

forループをループのように機能させる方法があることを知っていwhileます。

私はこのコードを動作させています:

while (BR.BaseStream.Position < BR.BaseStream.Length) // BR = BinaryReader
{
    int BlockLength = BR.ReadInt32();
    byte[] Content = BR.ReadBytes(BlockLength);
}

このループにfor相当するものが必要です..while

これまでのところ、私はこれを持っています:

for (long Position = BR.BaseStream.Position; Position < BR.BaseStream.Length; //Don't Know This)
{
    int BlockLength = BR.ReadInt32();
    byte[] Content = BR.ReadBytes(BlockLength);
}
4

4 に答える 4

4

いずれかのReadメソッドを使用するたびに、BinaryReaderはその位置をインクリメントするため、そのセクションには実際には何も必要ありません。

for (long Position = BR.BaseStream.Position; Position < BR.BaseStream.Length; Position = BR.BaseStream.Position)
{
    int BlockLength = BR.ReadInt32();
    byte[] Content = BR.ReadBytes(BlockLength);
}

更新Position:変数が更新されていないことに気づきました。forループの最後または3番目のセクションで更新できます。Positionforループの3番目のセクションで更新するコードを更新しました。

于 2012-05-18T06:45:47.773 に答える
3

なぜそれをやりたいのかわかりませんが、forループは次のようになります。

int i = 0;
for (; true; )
{
    Console.WriteLine(i);
    if(++i==10)
        break;
}
于 2012-05-18T06:45:57.020 に答える
0
for (long Position = BR.BaseStream.Position; Position < BR.BaseStream.Length; /* If you Don't Know     This, dont specify this. It is Optionl and can be kept blank */)
{
  int BlockLength = BR.ReadInt32();
  byte[] Content = BR.ReadBytes(BlockLength);
}
于 2012-05-18T06:50:59.937 に答える
0

擬似コードでは、これら2つのループは同等です。

ループ1:

Type t = initialiser;
while (t.MeetsCondition())
{
  // Do whatever
  t.GetNextValue();
}

ループ2:

for (Type t = initialiser; t.MeetsCondition(); t.GetNextValue())
  // Do whatever

残りはここから解決できると思います。

于 2012-05-18T06:46:45.440 に答える