我努力理解代表和该委托我创建了一个简单的例子,为自己,但它不工作,我希望它的方式,这里是我的例如:如何通过两项功能,其他功能与在C#中的参数
我的功能:
class Functions
{
public string MyFname(string MyString)
{
return MyString;
}
public string MyLname(string MyString)
{
return MyString;
}
}
代表:
class DelClass
{
public delegate string StrDelegate(string OutPutString);
public void StringCon(StrDelegate Fname,StrDelegate Lname)
{
Console.WriteLine(Fname + " " + Lname);
}
}
主营:
class Program
{
static void Main(string[] args)
{
DelClass MyDel = new DelClass();
Functions MyTster = new Functions();
DelClass.StrDelegate Name = new DelClass.StrDelegate(MyTster.MyFname);
Name("SomeVariableName");
DelClass.StrDelegate Family = new DelClass.StrDelegate(MyTster.MyLname);
Family("SomeVariableFamilyName");
MyDel.StringCon(Name, Family);
}
}
问题是控制台窗口不显示我传递的字符串,而不是它显示了下述文字:
MyDelegateMethodInMethod.DelClass + StrDelegate MyDelegateMethodInMethod.DelClass + StrDelegate
当我尝试像这样在StringCon体中调用传递函数:
Console.WriteLine(Fname() + " " + Lname();
编译器co说明“委托'StrDelegate'不接受0参数”,但我不想在StringCon的传递参数中传递参数,我想在我的主函数中这样做,甚至可以通过委托来实现吗?
它怎么能起作用?在StringCon()中,FName和LName是委托(方法),但没有数据(字符串)可以操作。 – 2015-01-04 13:08:50
我相信你的逻辑中的缺陷是调用一个委托会将委托设置为返回值。事实并非如此。当您调用委托时,它立即返回值。 – juharr 2015-01-04 13:14:21