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

时间:2013-12-16 22:01:03

标签: c# string

在以前拆分的语句中使用string.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的语句以返回字符串的正确长度?

1 个答案:

答案 0 :(得分:5)

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