我研究FileStream is implemented in C#的方式,并在Read(..)方法中可以看到:
n = ReadCore(_buffer, 0, _bufferSize);
...
Buffer.InternalBlockCopy(_buffer, _readPos, array, offset, n);
...
其中Buffer.InternalBlockCopy指向buffer.cs中的定义(波纹)。方法BlockCopy被定义为静态外部。该方法在哪里定义?它是.NET的一部分吗?是托管的还是本地的?
[System.Runtime.InteropServices.ComVisible(true)]
public static class Buffer
{
// Copies from one primitive array to another primitive array without
// respecting types. This calls memmove internally. The count and
// offset parameters here are in bytes. If you want to use traditional
// array element indices and counts, use Array.Copy.
[System.Security.SecuritySafeCritical] // auto-generated
[ResourceExposure(ResourceScope.None)]
[MethodImplAttribute(MethodImplOptions.InternalCall)]
public static extern void BlockCopy(Array src, int srcOffset,
Array dst, int dstOffset, int count);
..
}
答案 0 :(得分:1)
好吧,extern
keyword表示方法是在 C#代码外部和
[MethodImplAttribute(MethodImplOptions.InternalCall)]
表示它调用了Common Language Runtime中定义的方法。
该调用是内部的,也就是说,它调用在公共语言运行库中实现的方法。