为什么我必须在 String.Length 更新之前终止我的语句

本文关键字:终止 我的 语句 更新 Length String 为什么 | 更新日期: 2024-10-25 11:25:32

使用字符串时。以前拆分的语句中的 length 属性,它似乎返回 ArgumentOutOfRangeException,除非该语句被终止。

考虑一下:

// Throw exception?
var X = "[Hello World. This is a test]";
X = X.Split('[')[1].Split(']')[0].Remove(0, X.Length - 1);

而不是必须使用不会引发任何异常的分号终止语句。

// Works perfectly fine
var X = "[Hello World. This is a test]";
X = X.Split('[')[1].Split(']')[0];
X = X.Remove(0, X.Length - 1);

为什么我必须终止 Length 的语句才能返回字符串的正确长度?

为什么我必须在 String.Length 更新之前终止我的语句

X的赋值直到最后一步才会发生,因为在此之前你没有给X分配任何东西。因此,X.Length查看X的原始值,而不是中间值。