链式方法调用中的自引用对象
本文关键字:自引用 对象 调用 方法 | 更新日期: 2023-09-27 17:58:35
如何在同一方法的参数中引用链接方法的对象。假设您有许多链式方法调用,它们修剪/子字符串为这样的字符串:
str.Substring(varLen1).Substring(varLen2).Substring(1,##self##.Length-2)
问题是,由于字符串的长度现在是未知的,并且与原始字符串的长度不同,我在上一次调用中如何使用子字符串(索引和长度可能取决于字符串本身的子字符串)。
谢谢!
简而言之,没有
尽管使用扩展方法,您可以捕获##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);
}