最近我了解到,虽然.NET 2.0版本的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>
不可以。
通常系统类(或任何第三方库)可能会在幕后协作,使用私有数据进行通信(即那些标记为private或internal的项目)。
如果您尝试将错误的版本一起使用,则它们可能无法找到所期望的私有数据,并且会发生意外行为。
StringBuilder
或任何其他类,你可以获得哪些具体的好处?你已经确定了在你的情况下是否有可衡量的改进吗?这种好处如何平衡旧代码的并行运行成本以及任何未预见的缺陷? - Jodrell