关于委托不明白的问题。 报什么错误?是不是你在static方法里面调用了非static成员? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没有,他说的是“在不带括号的情况下引用了方法someMethod” ;我主要不明白他的意思,大侠能不能举例说明他的意思? delegate void SomeDelegate()和public void SomeMethod()传入的参数类型必须相同书上的例子很抽象,不要照搬 下面的示例显示多个委托的实例化及其相应的调用列表:delegate void D(int x);class C{ public static void M1(int i) {...} public static void M2(int i) {...}}class Test{ static void Main() { D cd1 = new D(C.M1); // M1 D cd2 = new D(C.M2); // M2 D cd3 = cd1 + cd2; // M1 + M2 D cd4 = cd3 + cd1; // M1 + M2 + M1 D cd5 = cd4 + cd3; // M1 + M2 + M1 + M1 + M2 }}实例化 cd1 和 cd2 时,它们分别封装一个方法。实例化 cd3 时,它的调用列表有两个方法 M1 和 M2,而且正是这样的顺序。cd4 的调用列表包含 M1、M2 和 M1,顺序与此相同。最后,cd5 的调用列表包含:M1、M2、M1、M1 和 M2,顺序与此相同。 是啊,你们说的我都理解,但是那个www.idesign.net的C#编码标准--命名约定和风格里面说的“使用委托的引用替换显式的委托实例。”和它这个例子我就不理解了。 SomeDelegate someDelegate = SomeMethod;是肯定不行的,必须使用你后面的方法 hehe,那他这个规范不是有问题了? //一个委托的例子namespace ConsoleTest{ delegate void delegate1(string str); delegate void delegate2(int dd); class ZZConsole { [STAThread] static void Main(string[] args) { delegate1 d1= new delegate1(StrMethod); delegate2 d2= new delegate2(IntMethod); d1("代理包装字符串方法"); d2(111111); Console.ReadLine(); } public static void StrMethod(string str) { Console.WriteLine(str); } public static void IntMethod(int dd) { Console.WriteLine(dd.ToString()); } }} 使用委托的引用替换显式的委托实例这句话应该是说用new出来的那个delegate来替代显示代码someDelegate。而不是直接用方法的reference(这里就是那个SomeMethod)来替换 原文是这样的 Use delegate inference instead of explicit delegate instantiation. 使用委托的引用替换显式的委托实例可能我钻了牛角尖,算了,结帖 WPF和Direct3D结合,可对D3D模型进行直接操作 c# 获取硬盘序列号的方法,最好不用系统api vs2005下关于自动添加括号的的问题 开发语言执行效率之比?! 类访问窗体中控件事件的方法 怎么弹出如下条件的对话框呢? 如何添加axShockwaveFlash控件? 急急急急急急急。。。。。。用C#实现的 投票系统 新手求助,10进制money值怎么修改? 如何实现双击事件? 急求救???用C#做dll问题 怎么把form中用pen画上的符号等实现清理屏幕。
我主要不明白他的意思,大侠能不能举例说明他的意思?
class C
{
public static void M1(int i) {...}
public static void M2(int i) {...}
}
class Test
{
static void Main() {
D cd1 = new D(C.M1); // M1
D cd2 = new D(C.M2); // M2
D cd3 = cd1 + cd2; // M1 + M2
D cd4 = cd3 + cd1; // M1 + M2 + M1
D cd5 = cd4 + cd3; // M1 + M2 + M1 + M1 + M2
}
}
实例化 cd1 和 cd2 时,它们分别封装一个方法。实例化 cd3 时,它的调用列表有两个方法 M1 和 M2,而且正是这样的顺序。cd4 的调用列表包含 M1、M2 和 M1,顺序与此相同。最后,cd5 的调用列表包含:M1、M2、M1、M1 和 M2,顺序与此相同。
namespace ConsoleTest
{
delegate void delegate1(string str);
delegate void delegate2(int dd);
class ZZConsole
{
[STAThread]
static void Main(string[] args)
{
delegate1 d1= new delegate1(StrMethod);
delegate2 d2= new delegate2(IntMethod);
d1("代理包装字符串方法");
d2(111111);
Console.ReadLine();
}
public static void StrMethod(string str)
{
Console.WriteLine(str);
}
public static void IntMethod(int dd)
{
Console.WriteLine(dd.ToString());
} }
}
Use delegate inference instead of explicit delegate instantiation.
使用委托的引用替换显式的委托实例
可能我钻了牛角尖,算了,结帖