我想重载一个解析方法,除了使用字符串(string
)版本之外,还要使用ReadOnlySpan<char>
参数。问题是,实现使用了Dictionary<string, T>
进行解析逻辑。
我尝试将其更改为Dictionary<ReadOnlySpan<char>, T>
,但当然无法工作,因为ReadOnlySpan<char>
不允许作为泛型参数,因为它是一个仅在堆栈中存在的对象。然后我切换到使用允许的ReadOnlyMemory<char>
。我实现了一个基本的Ordinal
比较器,但现在遇到麻烦,即如何从ReadOnlySpan<char>
参数创建ReadOnlyMemory<char>
。这可能吗?
更新
看来这是不可能的。为了支持上面我发布的场景,我将更改字典以具有int键,该键是ReadOnlySpan<char>
的哈希码,并使值成为一个列表,在其中嵌入字符串并手动解决哈希码冲突。
System.MemoryExtensions
类中应该有一个AsMemory()
方法来完成此操作,但由于在移动设备上无法测试。 - Sami KuhmonenAsMemory()
只接受string
、数组和ArraySegment<T>
。 - TylerBrinkley