metro c#中缺少String.Intern()方法

Mah*_*esh 2 c# microsoft-metro windows-8

如何在Metro c#中获取字符串实习方法.如果在Windows 8 c#中找不到,是否有任何等效的方法来维护系统对指定String的引用.

Han*_*ant 11

这是CLR中内置语言投影不可避免的副作用,它支持".NET for Metro风格应用程序"API.该投影将从WinRT api调用获得的字符串映射到System.String.底层字符串根本不是托管字符串,并不存在于垃圾收集堆上.这是一个HSTRING. 语言投影使其行为类似于System.String

因此,在该api中,String类没有特定于托管字符串的方法.像Intern()和IsInterned()一样,它只适用于托管字符串.复制,克隆和GetEnumerator也很棒.没有解决方法,在mscorlib中对托管String类的访问完全被引用程序集阻止,它将类型转发到System.Runtime.dll.如果没有这种方法,你必须让它工作.

  • String.GetEnumerator落入"如果我们再次开始我们不会添加它"的桶中.在.NET Framework中,它返回CharEnumerator,这对于遍历字符串非常低效(它导致每个循环的分配),并且对于C#和VB的foreach的代码吐出从1.0天开始就没有使用此类型.(他们现在将一个foreach转换为一个字符串,实际上是一个使用字符串索引器的"for循环").虽然一些删除可能看起来是任意的,但每次删除都是一个慎重的选择,并落入上面的一个桶中. (4认同)