1
我在學校有一個項目,我的老師要求我們將一個委託添加到Funcs列表中。下面的代碼在AddDel方法中存在問題。 Intellisense告訴我,它不能從代表轉換成Func,但我的老師堅持認爲它應該完全沒有問題。我究竟做錯了什麼?從代表演變爲func
public class TestDelegate
{
private delegate string MyDel(int iVal, double dVal, char cVal, string sVal);
private List<Func<int, double, char, string, string>> _DList;
public TestDelegate() { }
public void AddDel()
{
//Creating a delegate
MyDel myDel = new MyDel(MyFunction);
_DList.Add(myDel); //Adding it to the TestDelegate
}
public void RunTests()
{
int idata = 1;
double ddata = 5.1;
char cdata = 'A';
string sdata = "Method";
foreach (Func<int, double, char, string, string> myDel in _DList)
WriteLine(myDel(idata, ddata++, cdata++, sdata + idata++));
}
private static string MyFunction(int iVal, double dVal, char cVal, string sVal)
{
return $"{sVal}:\t{iVal} {dVal}{cVal}";
}
}
感謝您的回答!但是爲了我的教授想讓我爲這個項目做些什麼,甚至有可能把一個委託給一個Func? – lehast22
@McKenzieWinward:不,它不是。儘管如此,請參閱我的最終補充 - 您可以創建一個包裝舊代理的新代理。請注意,'Func <...> ** **是一個委託類型......它不是你聲明的。 –
我也沒有看到好處,但您的答案正是我一直在尋找的東西。在該項目的標題中,他確實講了一些關於使用包裝的內容。萬分感謝! – lehast22