You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core 3.1与.NET 5/6中string.IndexOf行为差异原因探究

不同.NET版本中IndexOf查找空字符串常量的行为差异

这看起来和《IndexOf method returns 0 when it should had return -1 in C# / Java》的问题类似,但实际并非完全相同。

执行以下测试代码:

var i = "Hello world".IndexOf("\0");

在.NET 5和.NET 6中,变量i的值为0;而在.NET Core 3.1中,i的值为-1。

我理解编译器可能将"\0"视为等同于"",参考相关讨论这或许合理,但关键在于不同.NET版本间的行为差异。

我的解决方法是将测试代码修改为:

var i = "Hello world".IndexOf('\0');

在字符串中查找空终止符看似奇怪,但该示例源自复杂场景,它明确了某库从.NET Core 3.1迁移至.NET 5/6后失效的原因。

内容的提问来源于stack exchange,提问作者TheRoadrunner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 22:20:45