还是做点事情,不要那么散漫。
本文以简单的Substring(int startindex,int Length)函数为例,来递进下它在托管和非托管的一些行为。
以下均为个人理解,如有疏漏请指正。QQ:676817308,公众号:江湖评谈
它的定义是在System.Runtime.dll里面
- public string Substring(int startIndex, int length)
- {
- throw null;
- }
它的实现在System.Private.CoreLib.dll里面
- public string Substring(int startIndex, int length)
- {
- //此处省略一万字
- return InternalSubString(startIndex, length);
- }
继续来看下InternalSubString
- private string InternalSubString(int startIndex, int length)
- {
- string text = string.FastAllocateString(length);
- UIntPtr elementCount = (UIntPtr)text.Length;
- Buffer.Memmove<char>(ref text._firstChar, Unsafe.Add<char>(ref this._firstChar, (IntPtr)((UIntPtr)startIndex)), elementCount);
- return text;
- }