1

与えられた

// r is a System.Data.IDataRecord
var blob = new byte[(r.GetBytes(0, 0, null, 0, int.MaxValue))];
r.GetBytes(0, 0, blob, 0, blob.Length);

r.GetBytes(...)返し、Int64 それよりも大きい可能性のある空の配列を作成するにはどうすればよいですか?Array.zeroCreateArray.initInt32Int32.MaxValue

4

2 に答える 2

6
于 2016-06-06T20:25:30.093 に答える
3

できません。.NET での 1 次元配列の最大長は ですSystem.Int32.MaxValueOverflowException値がこの制限を超えると、C# コードで が発生します。同等の F# コードは次のとおりです。

let blob =         
    let length = r.GetBytes(0, 0, null, 0, Int32.MaxValue)
    if length > int64(Int32.MaxValue) then
        raise (OverflowException())
    else
        Array.zeroCreate<byte>(int32(length))
于 2016-06-06T20:17:06.427 に答える