我努力理解代表和該委託我創建了一個簡單的例子,爲自己,但它不工作,我希望它的方式,這裏是我的例如:如何通過兩項功能,其他功能與在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