2011-06-08 59 views
1

如何在同一方法的參數中引用鏈接方法的對象。比方說,你有一個數字,修剪鏈式方法調用/串像這樣的字符串:鏈式方法調用中的自引用對象

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

的問題是,因爲字符串的長度是現在從原來的字符串的長度未知的,不同的,我該怎麼辦子字符串就像上次調用一樣(索引和長度可能取決於字符串本身的子字符串)。

謝謝!

+0

那麼我誤讀了這個問題。你指## ## SELF ##',而不是方法鏈:) – BoltClock 2011-06-08 12:26:39

+0

是的,對不起。我只是在評論你的帖子:-),但後來它不見了...... – o1iver 2011-06-08 12:28:44

+0

不知道你想要什麼'## SELF ##'來引用。什麼是「下標」功能? – CodesInChaos 2011-06-08 12:35:04

回答

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); 
} 
+0

好的,謝謝!以更實用的方式做這件事的好處,但我同意變得比必要更復雜...我想最好的解決方案實際上是寫我自己的「SubstringWithIndexFromBack」函數,然後鏈接... – o1iver 2011-06-08 13:09:56

相關問題