C# 中子字符串的实现及其使用哪种算法

本文关键字:算法 字符串 实现 | 更新日期: 2023-09-27 18:36:40

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

像C#是使用蛮力的方式,还是像个好孩子一样实现Boyer-Moore算法的问题。我需要为此编写源代码,我已经为Java找到了它(对于那些想知道的人,他们在indexOf()方法中使用了蛮力实现)。

有没有人知道如何在 C# 中检索此类方法的源代码。我的笔记本电脑上安装了视觉工作室,但我找不到任何源代码......

您的帮助将非常有义务!

C# 中子字符串的实现及其使用哪种算法

>Microsoft发布了完整的框架源代码,包括注释。您可以在参考源上找到实际的实现。对于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 它可能和它一样快。