dB.*_*yee 5 c# string substring
我想知道是否使用更好的做法:
var a = b.Substring(6);
Run Code Online (Sandbox Code Playgroud)
要么
var a = b.Remove(0,6);
Run Code Online (Sandbox Code Playgroud)
哪一个效率更高/更快?显然,子字符串有更多选项可供您选择,但Remove()无法做到。.很抱歉,如果这是新手问题,我对C#还是陌生的
使用反射器查看代码,InternalSubString只做一个,wstrcpy而Remove在做两个。我的猜测是第一个(SubString)快一点。
下面是Remove字符串类的方法的代码:
public unsafe string Remove(int startIndex, int count)
{
//...
string text = string.FastAllocateString(num);
fixed (char* ptr = &this.m_firstChar)
{
fixed (char* ptr2 = &text.m_firstChar)
{
string.wstrcpy(ptr2, ptr, startIndex);
string.wstrcpy(ptr2 + (IntPtr)startIndex, ptr + (IntPtr)startIndex + (IntPtr)count, num - startIndex);
}
}
}
Run Code Online (Sandbox Code Playgroud)
以及SubString方法调用的代码:
private unsafe string InternalSubString(int startIndex, int length)
{
string text = string.FastAllocateString(length);
fixed (char* ptr = &text.m_firstChar)
{
fixed (char* ptr2 = &this.m_firstChar)
{
string.wstrcpy(ptr, ptr2 + (IntPtr)startIndex, length);
}
}
return text;
}
Run Code Online (Sandbox Code Playgroud)