1

您如何在同一方法的参数中引用链接方法的对象。假设您有许多链接方法调用来修剪/子串一个字符串,如下所示:

str.Substring(varLen1).Substring(varLen2).Substring(1,##self##.Length-2)

问题是,由于字符串的长度现在未知并且与原始字符串的长度不同,我如何像上次调用那样子字符串(索引和长度可能取决于字符串本身的子字符串)。

谢谢!

4

1 回答 1

1

简而言之,没有。

尽管使用扩展方法,您可以捕获##self##并使用 lambda 来继续表达式。

public static TResult WithSelf<TSource, TResult> (this TSource x, Func<TSource, TResult> f)
{
    return f (x);
}

str.Substring (STDIN_PFX_FN.Length)
    .Trim (new char[] {'"', ' '})
    .WithSelf (x => x.Substring (1, x.Length - 2))

我倾向于认为最终会变得更复杂和更丑陋,并且更喜欢创建一个单独的函数。

str = Clean(str);

private string Clean (string str)
{
    str = str.Substring (STDIN_PFX_FN.Length).Trim (new char[] {'"', ' '});
    return str.Substring (1, str.Length - 2);
}
于 2011-06-08T12:51:57.757 回答