using System;namespace p290_21
{
public delegate void Del();
public class BigCat
{
public void Cry()
{
Console.WriteLine("肥猫看见老鼠后大叫!");
}
}
public class Host
{
public static void awake()
{
Console.WriteLine("主人醒了!");
}
}
public class Mouse
{
public static void awake()
{
Console.WriteLine("老鼠受到惊吓!");
}
}
class Program
{
static void Main(string[] args)
{
Del d = null;
Host h = new Host();
Mouse m = new Mouse();
BigCat bc = new BigCat();
Console.WriteLine("肥猫是否发现老鼠?");
string str;
str = Console.ReadLine();
if (str[0] == 'y')
{
bc.Cry();
//Del d = null;
d += Host.awake();
d += Mouse.awake();
d();
}
}
}
}
调用委托出错啊。。
新手看不懂。。求救。。
------ 已启动生成: 项目: p290_21, 配置: Debug Any CPU ------
C:\WINDOWS\Microsoft.NET\Framework\v3.5\Csc.exe /noconfig /nowarn:1701,1702 /errorreport:prompt /warn:4 /define:DEBUG;TRACE /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll" /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.DataSetExtensions.dll" /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Xml.Linq.dll" /debug+ /debug:full /filealign:512 /optimize- /out:obj\Debug\p290_21.exe /target:exe Program.cs Properties\AssemblyInfo.cs
C:\Documents and Settings\Administrator\桌面\代码\vs\9.24作业\home_work\p290_21\Program.cs(46,17): 错误 CS0019: 运算符“+=”无法应用于“p290_21.Del”和“void”类型的操作数
C:\Documents and Settings\Administrator\桌面\代码\vs\9.24作业\home_work\p290_21\Program.cs(46,22): 错误 CS0029: 无法将类型“void”隐式转换为“p290_21.Del”
C:\Documents and Settings\Administrator\桌面\代码\vs\9.24作业\home_work\p290_21\Program.cs(47,17): 错误 CS0019: 运算符“+=”无法应用于“p290_21.Del”和“void”类型的操作数
C:\Documents and Settings\Administrator\桌面\代码\vs\9.24作业\home_work\p290_21\Program.cs(47,22): 错误 CS0029: 无法将类型“void”隐式转换为“p290_21.Del”编译完成 -- 4 个错误,0 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
=>
Del d = () => { };
d += Mouse.awake();应为 d += new Del(Host.awake);
d += new Del(Mouse.awake);
d += Mouse.awake();
这两行后面的()去掉,应该就可以了。