C# C语言中的菊花链方法#

C# C语言中的菊花链方法#,c#,c#-4.0,C#,C# 4.0,我是.NET和C#的新手,有Ruby的背景。虽然我已经成功地用C#开发了几个小应用程序,但我还有很多东西要学。但有一件事让我感到困惑,那就是找到一种有效的方法来调用一个对象上的多个方法。我将给出一个使用字符串的示例 我习惯于在Ruby中做这样的事情: my_string = "The quick brown fox\tjumped over the lazy dog\t\n" puts my_string.strip.split("\t") 然而,为了在C#中完成同样的事情,我现在只知道要做以

我是.NET和C#的新手,有Ruby的背景。虽然我已经成功地用C#开发了几个小应用程序,但我还有很多东西要学。但有一件事让我感到困惑,那就是找到一种有效的方法来调用一个对象上的多个方法。我将给出一个使用字符串的示例

我习惯于在Ruby中做这样的事情:

my_string = "The quick brown fox\tjumped over the lazy dog\t\n"
puts my_string.strip.split("\t")
然而,为了在C#中完成同样的事情,我现在只知道要做以下几件事:

var myString = "The quick brown fox\tjumped over the lazy dog\t\n";
var myStringTrim = myString.Trim();
var myStringSplit = myStringTrim.Split('\t');
foreach (var s in myStringSplit)
    {
        Console.WriteLine(s);
    }
那么,有没有更有效的方法在C#中实现这一点


这个特别的例子让我想知道,如果我使用这个方法来读取、解析和处理一个大的文本文件或类似的东西,性能会发生什么变化

您可以执行
myString.Trim().Split('\t')在C中#

您可以这样做,因为
Trim()
返回一个
string
对象,然后您可以调用
Split()
on,它返回一个数组


但这并不一定更“有效”。正在创建临时对象,即使您没有将它们存储在变量中。

您可以像这样将这些命令链接在一起:

myString.Trim().Split('\t').ForEach(s => Console.WriteLine(s));

这很好用

var myString = "The quick brown fox\tjumped over the lazy dog\t\n".Trim().Split('\t');
这些方法是string对象的实例方法,它们的工作方式与您在Ruby中所期望的一样


要记住的一件事是字符串是不可变的。也就是说,这些方法不会更改字符串变量的原始值,而是返回原始值的修改副本。

。ForEach无法保证速度。事实上,它可能是opposite@Hao为什么你会认为它可能是相反的?好吧…我有很多东西要学。谢谢大家这么快的回复。这就是我们所知道的。