1
私は先生がFuncのリストに代理人を追加するように私に依頼しているプロジェクトを学校に持っています。私が下にあるコードは、AddDelメソッドに問題があります。 Intellisenseは、代議員から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