相关疑难解决方法(0)

为什么.NET String是不可变的?

众所周知,String是不可变的.String不可变的原因是什么,StringBuilder类的引入是可变的?

.net c# string immutability

182
推荐指数
8
解决办法
10万
查看次数

String.Replace()与StringBuilder.Replace()

我有一个字符串,我需要用字典中的值替换标记.它必须尽可能高效.使用string.replace执行循环只会消耗内存(字符串是不可变的,请记住).StringBuilder.Replace()会更好,因为它是用于字符串操作的吗?

我希望避免花费RegEx,但如果这样做会更有效率那么就这样吧.

注意:我不关心代码复杂性,只关心它运行的速度和消耗的内存.

平均统计数据:长度为255-1024个字符,字典中为15-30个字符.

.net c# replace .net-4.0

73
推荐指数
4
解决办法
5万
查看次数

StringBuilder.Replace()比String.Replace更有效吗?

如果必须使用String.Replace()替换测试50次,则基本上必须创建一个新字符串50次.StringBuilder.Replace()是否更有效地执行此操作?例如,如果我要替换大量文本,我是否应该使用StringBuilder,即使我不会向其添加任何数据?

我正在使用.NET,但我认为这与Java和其他语言可能相同.

.net string stringbuilder

28
推荐指数
3
解决办法
1万
查看次数

如何查看标记为MethodImplOptions.InternalCall的方法代码?

当使用ILSpy检查System.String的代码时,我发现有一些方法被标记为MethodImplOptions.InternalCall,例如:

[SecurityCritical]
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern int nativeCompareOrdinalEx(string strA, int indexA, string strB, int indexB, int count);
Run Code Online (Sandbox Code Playgroud)

我知道MethodImplOptions.InternalCall意味着该方法由公共语言运行库本地实现,以优化代码以提高性能.

我的问题是:无论如何,是否可以让我们看到标记为MethodImplOptions.InternalCall的代码?

.net c# clr

17
推荐指数
2
解决办法
4741
查看次数

字符串和垃圾收集

我听过有关这个主题的相互矛盾的故事,我正在寻找一点清晰.

如何string立即处理物体,或至少清除它的痕迹?

.net c# string garbage-collection

16
推荐指数
3
解决办法
2万
查看次数