C# 如何选择要使用的partcular系统类的哪个版本?
最近我了解到,虽然StringBuilder的NET 2.0版本针对C# 如何选择要使用的partcular系统类的哪个版本?,c#,.net,C#,.net,最近我了解到,虽然StringBuilder的NET 2.0版本针对ToString()进行了优化,但NET 4.0版本针对Append()进行了优化。这让我想知道——我可以选择在每种情况下使用哪个版本的系统类吗 (这个问题不是关于StringBuilder,而是关于任何系统类。StringBuilder只是一个示例。)不,您不能 通常,系统类(或任何第三方库)可以在后台进行协作,使用私有数据进行通信(即标记为私有或内部的项) 如果您试图同时使用错误的版本,它们可能找不到预期的私有数据,并且会发
ToString()
进行了优化,但NET 4.0版本针对Append()
进行了优化。这让我想知道——我可以选择在每种情况下使用哪个版本的系统类吗
(这个问题不是关于StringBuilder
,而是关于任何系统类。StringBuilder
只是一个示例。)不,您不能
通常,系统类(或任何第三方库)可以在后台进行协作,使用私有数据进行通信(即标记为私有或内部的项)
如果您试图同时使用错误的版本,它们可能找不到预期的私有数据,并且会发生意外行为。您可以尝试类似的方法
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="myAssembly"
publicKeyToken="32ab4ba45e0a69a1"
culture="en-us" />
<!-- Assembly versions can be redirected in application, publisher policy, or machine configuration files. -->
<bindingRedirect oldVersion="1.0.0.0"
newVersion="2.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="mySecondAssembly"
publicKeyToken="32ab4ba45e0a69a1"
culture="en-us" />
<!-- Publisher policy can be set only in the application configuration file. -->
<publisherPolicy apply="no">
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
我很确定这会产生名称空间冲突,但我不知道,这是一个有趣的问题。不过,mono/Unity3d方面并不是真正相关的,所以我把它删掉了。如果你想要一个特别的基于单声道的答案,请随时恢复我的编辑或制作一个新的来表明这一点。但是,你真的想要吗?使用.Net 2.0版本的StringBuilder
或任何其他类,您可以获得哪些切实的好处。你有没有为你的处境找到一个可测量的改进?这一好处如何与并行运行的成本和旧代码中任何不可预见的缺陷相平衡?通常最新版本的框架将具有最佳性能。即使其他版本可能有优势,这听起来像是过早的优化。如果当前版本导致性能问题,请评估您的选项。@Jodrell我现在真的不需要它,我问这个问题完全是出于好奇。我必须承认,我对答案和想法感兴趣。