なぜFileStream.Lengthはlong型ですが、FileStream.Read引数 - offsetの方が短い長さのintですか?なぜFileStream.Lengthはlong型ですが、FileStream.Read引数 - offsetの長さが短いのはなぜですか?
ブライアン
なぜFileStream.Lengthはlong型ですが、FileStream.Read引数 - offsetの方が短い長さのintですか?なぜFileStream.Lengthはlong型ですが、FileStream.Read引数 - offsetの長さが短いのはなぜですか?
ブライアン
offset
パラメータがどこ配列、array
パラメータでデータの書き込みを開始するように指示します。ファイルデータ内のオフセットを指摘しません。
がパラメータは読み出し開始するにアレイ(バッファインデックス)内のバイトのオフセット、及びカウントパラメータは、このストリームから読み出されるバイトの最大数を与える与えるオフセット。戻り値は実際に読み取られたバイト数です。ストリームの終わりに達した場合はゼロです。読み込み操作が成功した場合、ストリームの現在の位置は読み込まれたバイト数だけ進められます。例外が発生した場合、ストリームの現在の位置は変更されません。
私はあなたが基本クラスStream
からオーバーライドされるthis方法を参照していると仮定しています。
オフセットは、FileStream
の先頭からのオフセットではないバイトを配置するために、array
引数の場所です。 array
引数のタイプはbyte[]
で、int.MaxValue
個以上の要素を持つことはできません。
オフセットは、データが配置されているバイト配列のインデックスです。 2 GBを超える配列を割り当てることはできません。そのため、オフセットの数を増やす必要はありません。
なぜ、byte []をint.MaxValue以上にインデックスできないのですか?class Arrayは、object this[int index] { get; set; }
メソッドでIListを実装しているため、indexは整数にしかなりません。
FileStream.Lengthはストリームのバイト数を取得し、FileStream.Readはストリームからバイトブロックを読み取ります。したがって、論理的には、そのバイトのブロックよりもシングルバイトが多くなります。私はこの理由FileStream.Length長いタイプが必要と仮定しています。
これは、.NET 4.5の設定で許可されています。 http://msdn.microsoft.com/en-us/library/hh285054(v=vs.110).aspx – sisve
非常に興味深い事実。どうも。 –
http://msdn.microsoft.com/en-us/library/hh285054(v=vs.110).aspx –