.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
相关产品推荐
相关产品推荐

