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 可能已经达到了最快的速度。
我有一个问题,我正在研究一些编程语言。 该研究是关于 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 可能已经达到了最快的速度。