2009-11-14 159 views
1

有人可以幫我理清這個編譯器錯誤嗎?奇怪的C#編譯器錯誤

我有這樣

public class Test { 
    public delegate void TestAction<T>(T arg); 
    public delegate void TestActionCaller<T1, T2>(T1 arg, TestAction<T2> action); 

    public static void Call<T1,T2>(TestActionCaller<T1,T2> actioncaller) { 
     actioncaller(default(T1), arg => { }); 
    } 
} 

類然後,我有以下代碼

public class TestCaller { 
    static TestCaller() { 
     Test.Call<int, int>((arg,action)=>action(arg)); 
    } 
} 

這工作得很好。

但是,如果我將TestCaller移動到另一個程序集(與上面的代碼完全相同),我得到一個編譯器錯誤「Delegate'TestAction'不帶'1'參數。

回答

2

相信編譯器無法推斷參數,你需要明確指定其類型:

Test.Call((int arg, TestAction<int> action) => action(arg)); 
+0

衛生署,爲什麼我沒測試。有效。謝謝 – adrianm