如何在同一方法的參數中引用鏈接方法的對象。比方說,你有一個數字,修剪鏈式方法調用/串像這樣的字符串:鏈式方法調用中的自引用對象
str.Substring(varLen1).Substring(varLen2).Substring(1,##self##.Length-2)
的問題是,因爲字符串的長度是現在從原來的字符串的長度未知的,不同的,我該怎麼辦子字符串就像上次調用一樣(索引和長度可能取決於字符串本身的子字符串)。
謝謝!
如何在同一方法的參數中引用鏈接方法的對象。比方說,你有一個數字,修剪鏈式方法調用/串像這樣的字符串:鏈式方法調用中的自引用對象
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);
}
好的,謝謝!以更實用的方式做這件事的好處,但我同意變得比必要更復雜...我想最好的解決方案實際上是寫我自己的「SubstringWithIndexFromBack」函數,然後鏈接... – o1iver 2011-06-08 13:09:56
那麼我誤讀了這個問題。你指## ## SELF ##',而不是方法鏈:) – BoltClock 2011-06-08 12:26:39
是的,對不起。我只是在評論你的帖子:-),但後來它不見了...... – o1iver 2011-06-08 12:28:44
不知道你想要什麼'## SELF ##'來引用。什麼是「下標」功能? – CodesInChaos 2011-06-08 12:35:04