为什么TrimStart只有在我再次将文本赋值回变量时才能工作

本文关键字:变量 赋值 工作 文本 TrimStart 为什么 | 更新日期: 2023-09-27 18:11:44

scrollerList = new List<string>(TextExtractor.newTextWithoutLinks);
scrollerText = string.Join(Environment.NewLine, scrollerList);
combindedString = string.Join(Environment.NewLine, newText);
scroller1.TextToScroll = scrollerText;
richTextBox1.Text = combindedString;
richTextBox1.Text = richTextBox1.Text.TrimStart();
richTextBox1.Refresh();

这是一个工作行:

richTextBox1.Text = richTextBox1.Text.TrimStart();

但是如果我在做:

richTextBox1.Text.TrimStart();

它不工作,我的意思是不做任何改变。

并不是说我得到任何例外,但有点奇怪,我需要分配两次到richTextBox1文本删除在richTextBox1顶部的空行。

为什么TrimStart只有在我再次将文本赋值回变量时才能工作

string是不可变的-您所看到的是预期的行为。像TrimStart()这样的操作将创建一个新的string,在调用该方法时返回。

为什么不一次做完呢?

richTextBox1.Text = combindedString.TrimStart();

TrimStart()返回一个经过裁剪的新字符串。它不修改原始字符串:

从http://msdn.microsoft.com/en-us/library/system.string.trimstart (v = vs.110) . aspx

此方法不修改当前实例的值。相反,它返回一个新字符串,其中所有前导空格在当前实例中找到的字符将被删除。

生成一个与旧字符串无关的新字符串。你必须把现有的换成新的!这是正确的:

richTextBox1.Text = richTextBox1.Text.TrimStart();