代码
的原因是什么?Line ScoreLine;
ScoreLine = Charting.CreateLine(
"Score", "", Symbol, new Pen(Color.Pink),
LineStyle.Line, Charting.PriceChart, 2
);
导致与
不同的行为Line ScoreLine;
Func<string, Color, int, Line> createLine
= (string label, Color color, int pad)
=> Charting.CreateLine(label, "", Symbol, new Pen(color),
LineStyle.Line, Charting.PriceChart, pad);
ScoreLine = createLine("Score", Color.Pink, 2);
它看起来像一个微不足道的重构,但第二个版本表现得非常奇怪。似乎lambda函数的参数并不重要,并且先验地设置为特定值。
答案 0 :(得分:1)
测试你的代码:
Func<string, Color, int, string> createLine
= ( label, color, pad )
=> ( "Label: " + label + " | pad: " + pad + " | Color: " + color.ToString( ) );
Console.WriteLine( createLine( "Test 1", Color.Red, 1 ) );
Console.WriteLine( createLine( "Test 2", Color.Green, 2 ) );
Console.WriteLine( createLine( "Test 3", Color.Blue, 3 ) );
你应该看到这个:
> Label: Test 1 | pad: 1 | Color: Color [Red]
> Label: Test 2 | pad: 2 | Color: Color [Green]
> Label: Test 3 | pad: 3 | Color: Color [Blue]
我认为 Chris Knight 是对的,您的问题是您将返回值分配给与Line
不同的类,并且会有一些其他代码更改您的颜色。
答案 1 :(得分:0)
我看到的一件事情,我们在不了解这些图表的内容的情况下,Func<string, Color, int, Line>
表示它返回Line
,但您要将方法调用的结果分配给ScoreLine
当使用lambda时。在非lambda示例中,您将结果分配给Line
。这可能是个问题吗?您没有说明ScoreLine
和Line
的类型是什么,所以我无法确定。