没有区别的。第二种方法都不用事先AsSpan() 直接在调用时传入string 参数即可。
无论是先AsSpan() 还是后AsSpan() 都是只有一个返回string参数首地址“指针”的过程,并且 函数参数的string s
和 span<char> span
都是一个指向堆内存的引用,只不过二者的功能特性不同。传入一个地址而已,我认为对性能并无区别
2个方法名相同,不 AsSpan 不行
Corefx 里就是这样用的,提供语法糖方便使用而已,同时可以减少重复代码。
public static bool TryParse(string? value, out bool result)
{
if (value == null)
{
result = false;
return false;
}
return TryParse(value.AsSpan(), out result);
}
public static bool TryParse(ReadOnlySpan<char> value, out bool result)
{
if (IsTrueStringIgnoreCase(value))
{
result = true;
return true;
}
if (IsFalseStringIgnoreCase(value))
{
result = false;
return true;
}
// Special case: Trim whitespace as well as null characters.
value = TrimWhiteSpaceAndNull(value);
if (IsTrueStringIgnoreCase(value))
{
result = true;
return true;
}
if (IsFalseStringIgnoreCase(value))
{
result = false;
return true;
}
result = false;
return false;
}