草庐IT

针对性

全部标签

c# - 针对大型 List<string> 测试大量字符串的最有效方法

我已经查看了许多其他类似的问题,但是给出的方法对于我想要完成的事情来说似乎太慢了,或者正在测试部分匹配,我不需要并且应该更慢。我有两个充满字符串的大文件,我需要检查一个列表中的每个字符串,看它是否与第二个列表中的任何字符串匹配。我不需要检查部分匹配项,所有内容都应该正确转义。第二个列表(要删除的字符串)包含160,000个字符串。我已将其加载到List中然后读取较大文件的每一行并使用List.Any(line.contains)对其进行测试.即使只有第一个列表的一小部分(40k字符串),这也会花费很长时间,在我快速开发的计算机上可能超过20分钟。这是我的问题当不需要部分匹配时,是否有更

c# - 针对大型 List<string> 测试大量字符串的最有效方法

我已经查看了许多其他类似的问题,但是给出的方法对于我想要完成的事情来说似乎太慢了,或者正在测试部分匹配,我不需要并且应该更慢。我有两个充满字符串的大文件,我需要检查一个列表中的每个字符串,看它是否与第二个列表中的任何字符串匹配。我不需要检查部分匹配项,所有内容都应该正确转义。第二个列表(要删除的字符串)包含160,000个字符串。我已将其加载到List中然后读取较大文件的每一行并使用List.Any(line.contains)对其进行测试.即使只有第一个列表的一小部分(40k字符串),这也会花费很长时间,在我快速开发的计算机上可能超过20分钟。这是我的问题当不需要部分匹配时,是否有更

c# - 为什么 String.Concat 没有针对 StringBuilder.Append 进行优化?

我发现编译器将常量字符串表达式的串联优化为一个字符串。现在只有在运行时才知道字符串的字符串串联,为什么编译器不优化循环中的字符串串联和10个以上字符串的串联,而是使用StringBuilder.Append?我的意思是,这是可能的,对吧?实例化一个StringBuilder并进行每次连接并将其转换为Append()调用。有什么理由可以或不优化?我错过了什么? 最佳答案 肯定的答案必须来自编译器设计团队。但是让我在这里试一试......如果你的问题是,为什么编译器不转这个:strings="";for(inti=0;i进入这个:Str

c# - 为什么 String.Concat 没有针对 StringBuilder.Append 进行优化?

我发现编译器将常量字符串表达式的串联优化为一个字符串。现在只有在运行时才知道字符串的字符串串联,为什么编译器不优化循环中的字符串串联和10个以上字符串的串联,而是使用StringBuilder.Append?我的意思是,这是可能的,对吧?实例化一个StringBuilder并进行每次连接并将其转换为Append()调用。有什么理由可以或不优化?我错过了什么? 最佳答案 肯定的答案必须来自编译器设计团队。但是让我在这里试一试......如果你的问题是,为什么编译器不转这个:strings="";for(inti=0;i进入这个:Str

c# - 针对网络标准 1.6 的 .net 核心应用程序中的动态引用?

我正在尝试在面向.net标准1.6的C#.net核心应用程序中使用dynamic变量。(平台?库?框架?元框架?)我第一次在实际应用程序中遇到这个问题,但我已将其减少到最小的再现。项目.json{"version":"1.0.0-*","buildOptions":{"emitEntryPoint":true},"dependencies":{"NETStandard.Library":"1.6.0"},"frameworks":{"netstandard1.6":{"imports":"dnxcore50"}},"runtimes":{"win10-x64":{}}}程序.csusi

c# - 针对网络标准 1.6 的 .net 核心应用程序中的动态引用?

我正在尝试在面向.net标准1.6的C#.net核心应用程序中使用dynamic变量。(平台?库?框架?元框架?)我第一次在实际应用程序中遇到这个问题,但我已将其减少到最小的再现。项目.json{"version":"1.0.0-*","buildOptions":{"emitEntryPoint":true},"dependencies":{"NETStandard.Library":"1.6.0"},"frameworks":{"netstandard1.6":{"imports":"dnxcore50"}},"runtimes":{"win10-x64":{}}}程序.csusi

c# - 针对多个接口(interface)编程

我非常喜欢这个提示:“针对接口(interface)而不是实现进行编程”,并且我正在努力始终如一地遵循它。然而,当我必须将我的代码与必须从多个接口(interface)继承的对象分离时,我不确定如何保持这个原则的工作。一个典型的例子可能是:namespaceProgramAgainstInterfaces{interfaceIMean{voidfoo();}classMeaning:IMean,IDisposable{publicvoidDispose(){Console.WriteLine("Disposing...");}publicvoidfoo(){Console.WriteL

c# - 针对多个接口(interface)编程

我非常喜欢这个提示:“针对接口(interface)而不是实现进行编程”,并且我正在努力始终如一地遵循它。然而,当我必须将我的代码与必须从多个接口(interface)继承的对象分离时,我不确定如何保持这个原则的工作。一个典型的例子可能是:namespaceProgramAgainstInterfaces{interfaceIMean{voidfoo();}classMeaning:IMean,IDisposable{publicvoidDispose(){Console.WriteLine("Disposing...");}publicvoidfoo(){Console.WriteL

c# - 针对特定值的 Linq OrderBy

Linq中是否有一种方法可以在不知道值顺序的情况下对一组值(在本例中为字符串)执行OrderBy?考虑这个数据:ABACBCDE还有这些变量:stringfirstPref,secondPref,thirdPref;当值设置成这样时:firstPref='A';secondPref='B';thirdPref='C';是否可以这样排序数据:AABBCCDE 最佳答案 如果将您的偏好放入列表中,可能会变得更容易。Listdata=newList{"A","B","A","C","B","C","D","E"};Listpreferen

c# - 针对特定值的 Linq OrderBy

Linq中是否有一种方法可以在不知道值顺序的情况下对一组值(在本例中为字符串)执行OrderBy?考虑这个数据:ABACBCDE还有这些变量:stringfirstPref,secondPref,thirdPref;当值设置成这样时:firstPref='A';secondPref='B';thirdPref='C';是否可以这样排序数据:AABBCCDE 最佳答案 如果将您的偏好放入列表中,可能会变得更容易。Listdata=newList{"A","B","A","C","B","C","D","E"};Listpreferen