C# 中子字符串的实现及其使用的算法是什么?

Implementation of substring in C# and which algorithm does it use?

我有一个问题,我正在研究一些编程语言。 该研究是关于 C# 和 Java 中子字符串函数的效率。

诸如 C# 是否使用蛮力之类的问题,或者他们是否像好孩子一样实现 Boyer-Moore 的算法。 我需要这个的源代码,我已经为 Java 找到了它(谁在 indexOf() 方法中为那些想知道的人使用暴力实现)。

有没有人知道如何在 C# 中检索这些方法的源代码。 我的笔记本电脑上安装了 visual studio,但我找不到任何源代码...

非常感谢您的帮助!

微软发布了完整的框架源代码,包括注释。您会发现实际的实现 over here on referencesource。对于 SubString,归结为一些非托管代码:

    [System.Security.SecurityCritical]  // auto-generated
    unsafe string InternalSubString(int startIndex, int length) {
        Contract.Assert( startIndex >= 0 && startIndex <= this.Length, "StartIndex is out of range!");
        Contract.Assert( length >= 0 && startIndex <= this.Length - length, "length is out of range!");            

        String result = FastAllocateString(length);

        fixed(char* dest = &result.m_firstChar)
            fixed(char* src = &this.m_firstChar) {
                wstrcpy(dest, src + startIndex, length);
            }

        return result; 

如您所见,他们使用的 wstrcpy 可能已经达到了最快的速度。