私はこれまで見てきましたがArray.ConstrainedCopy
、CLRの内部で、その実装が舞台裏で行われている理由を理解するのに苦労しています。
ConstrainedCopy
次のこと以上のことをしますか?
[ReliabilityContract(Consistency.WillNotCorruptState, CER.Success)]
static void ConstrainedCopy(Array src, int iSrc, Array dest, int iDest, int len)
{
Array backup = Array.CreateInstance(dest.GetType().GetElementType(), len);
Array.Copy(dest, iDest, backup, 0, len);
try { Array.Copy(src, iSrc, dest, iDest, len); }
catch { Array.Copy(backup, 0, dest, iDest, len); throw; }
}
もしそうなら、それは他に何をしますか?
そうでない場合、なぜ実装は純粋なC#/。NETコードではなく、CLRによって特別に扱われるのでしょうか。