C#中的菊花链方法

时间:2012-05-04 02:25:20

标签: 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#中完成同样的事情,这就是我现在所知道的事情:

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#中实现这一目标?

这个特殊的例子让我想知道如果我使用这个方法来读取,解析和处理大型文本文件或类似的东西会对性能产生什么影响。

3 个答案:

答案 0 :(得分:7)

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

您可以这样做,因为Trim()会返回一个string对象,您可以在其上调用Split(),然后返回一个数组。

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

答案 1 :(得分:4)

这很好用......

var myString = "The quick brown fox\tjumped over the lazy dog\t\n".Trim().Split('\t');

这些方法是字符串对象的实例方法,并且可以像你期望的那样在Ruby中工作。

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

答案 2 :(得分:2)

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

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