C#控制台应用程序提示‘只能出现在+=或-=左边’

using System;
using System.Collections.Generic;
using System.Text;
namespace Delegate
{
public delegate void GreetingDelegate(string name);

public class GreetingManager
{
public event GreetingDelegate MakeGreet;
public void GreetPeople(string name, GreetingDelegate MakeGreeting)
{
MakeGreeting(name);
}
}
class Program
{
private void EnglishGreeting(string name)
{
Console.WriteLine("Morning, " + name);
}
private void ChineseGreeting(string name)
{
Console.WriteLine("早上好, " + name);
}

static void Main(string[] args)
{
GreetingManager gm = new GreetingManager();
Program p = new Program();
gm.MakeGreet = p.EnglishGreeting;
gm.MakeGreet += p.ChineseGreeting;
gm.GreetPeople("name", gm.MakeGreet);

}
}
}

因为你定义的MakeGreet是事件,而事件必须使用加法赋值运算符 (+=) 来为事件附加事件处理程序,使用减法赋值运算符 (-=) 取消订阅事件
不支持其它的运算符

参考微软MSDN:
http://msdn.microsoft.com/zh-cn/library/ms366768.aspx
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-14
gm.MakeGreet = p.EnglishGreeting;
改成
gm.MakeGreet += p.EnglishGreeting;
第2个回答  2010-12-15
LZ这样试一下:
GreetingDelegate delegate1;
delegate1 = EnglishGreeting; // 先给委托类型的变量赋值
delegate1 += ChineseGreeting; // 给此委托变量再绑定一个方法
应该是可以的,如果按你写的就要把
gm.MakeGreet = p.EnglishGreeting;
改成
gm.MakeGreet += p.EnglishGreeting; //给事件注册方法

可以搜索下委托与事件的资料,呵呵

C#控制台应用程序提示‘只能出现在+=或-=左边’
因为你定义的MakeGreet是事件,而事件必须使用加法赋值运算符 (+=) 来为事件附加事件处理程序,使用减法赋值运算符 (-=) 取消订阅事件 不支持其它的运算符 参考微软MSDN:http:\/\/msdn.microsoft.com\/zh-cn\/library\/ms366768.aspx

C#中如何使控制台的应用程序 不显示 黑框@@
您好,第一种方法是新建一个Service Application,也就是服务程序。第二种方法是建立一个Windows Application,然后隐藏应用程序的窗体或修改应用程序的入口点Main函数。希望对您有帮助。

求高手解决---用C#控制台应用程序编代码实现以下要求!!!
第一步,取数字和点,不管它中间有几个点都取了 第二步,判断点的个数,超过2个则丢弃即可

C#控制台程序的输入输出信息?
1、以C#控制台应用程序为例:Console.WriteLine("输入3个整数,之间以逗号分隔,回车键结束...");string str = Console.ReadLine(); \/\/读入用户输入信息 string[] input = str.Split(new char[] { ',' }); \/\/以逗号为分隔符,分离出各项 if (input.Count() == 3) \/\/不是3,用户输入...

急救,为什么控制台程序运行时闪一下就没了
看来这个问题一般人是解决不了的 你就重新问一遍吧,记得要发站内广播,呢样就有更多人看到你的问题 就会有人答得上来的。

C#控制台程序,怎么限制用户输入的是数字,输入别的提示错误并要求用户...
在textbox的傍边加个验证控件,在属性ValidationExpression 改成[0-9]

c# 指定的参数已超出有效值的范围怎么办?
以后要避免此错误,您可以在使用 "IndexOf"方法之前,先使用 "Contains" 方法来判断字符串 "str2" 中是否包含 `"!"` 字符,如果不包含,则可以选择适当的操作,例如输出错误消息或者使用其他默认值。例如:string str3;if (str2.Contains("!")){ str3 = str2.Insert(str2.IndexOf("!"), "...

C#控制台问题
1、Console.ReadLine()一次只能读取255个字节的字符串。这个CMD 输入款限制的。2、你可以使用StreamWriter将你读入的行写入到一个文件中 你的算法很有意思啊 是不是就是从一个字符串的第一位开始读一个数与另一个字符串相加。如果超过1位就将十位的数保存,然后再加第二位的时候将这个数加上。

在C#控制台中如何写出只能输入数字?
Console.ReadLine()是无法限制控制台输入的,当然可以用regexp匹配正则,失败后从新Console.ReadLine()另一种方法就是每次只获取一个字符 string s = "";ConsoleKeyInfo k = Console.ReadKey();while (k.Key != ConsoleKey.Enter){ if (k.KeyChar >= '0' && k.KeyChar <= '9'){ s += ...

C#控制台程序如何去掉类似DOS的窗口的显示?
打开【项目属性】,找到【输出类型】,改为【windows应用程序】

相似回答