在以前拆分的语句中使用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的语句以返回字符串的正确长度?
答案 0 :(得分:5)
X
的分配直到最后一步才会发生,因为在此之前你没有向X
分配任何内容。因此,X.Length
会查看X
的原始值,而不是中间值。