我试图声明这样的跨度列表:
public List<Span<char>> spanList;
Run Code Online (Sandbox Code Playgroud)
但是似乎我无法执行此操作,因为错误显示类型'Span'不能用作类型参数。
那么,我在做什么错呢?谢谢。
作为替代方案,您可以创建List<Memory<char>>. 然后您可以获得Span<char>各个元素的 a :
var someCharArray = "abcdefghij".ToCharArray();
Memory<char> memory1 = someCharArray;
var memory2 = memory1.Slice(1, 3);
var list = new List<Memory<char>> { memory1, memory2 };
// ...
var span1 = list[0].Span;
var span2 = list[1].Span;
Run Code Online (Sandbox Code Playgroud)
但是,我们确实需要了解您的用例,以便能够判断这一切是否对您有用。
顺便说一句,我推荐这篇关于该主题的文章。仔细阅读后,您将能够确定上面的代码在您的用例中是否有意义。
我试图声明这样的跨度列表:
public List<Span<char>> spanList;
Run Code Online (Sandbox Code Playgroud)
那不合法
但是似乎我无法执行此操作,因为错误提示“ Span”类型不能用作类型参数。
正确。跨度不能用作类型参数。
我究竟做错了什么?
您正在使用span作为类型参数。那不合法 这就是为什么错误消息说span不能用作类型参数的原因。
由于您已经知道这一点,因此不清楚您为什么提出这个问题。你到底在问什么
跨度是非常特殊的类型,出于非常特定的目的而存在。如果您尝试将跨度放入列表中,则说明您做错了非常多的事情,因为您正在直接违反跨度的预期目的。跨度的存在是在某些非常有限的情况下为您提供更好的性能,而为获得更好的性能而付出的代价是对跨度使用方式的限制。
这听起来很像我们所说的“ XY”问题。您有问题,对解决问题有疯狂的想法,疯狂的想法行不通,现在您是在问有关疯狂想法的问题,而不是真正的问题。提出有关实际问题的问题。
还有其他选择吗?
列出除跨度以外的内容,或使用除列表以外的其他内容来管理您的跨度。
由于我们不知道您要解决什么问题,因此我们无法帮助您解决问题。 我们不知道您要解决的问题是因为您没有说要解决的问题。帮助我们帮助您。
到目前为止,我们所知道的只是您尝试做非法的事情,然后询问有关错误消息的问题,该错误消息清楚地表明您正在做的事情是非法的。
| 归档时间: |
|
| 查看次数: |
834 次 |
| 最近记录: |