困扰我二小时的问题_C#(初学者问题)_在线等

来源:百度知道 编辑:UC知道 时间:2024/06/02 20:30:55
using System;
using System.Collections.Generic;
using System.Text;

namespace cpp3
{
delegate void D(int x);
class Program
{
static void Main(string[] args)
{
D cd1 = new D(C.M1);
C t = new C();
D cd2 = new D(C.M2);//怎么我这里不能委托C.M2方法????
}
}
class C
{
public static void M1(int i)
{
Console.WriteLine("M1");
}
public void M2(int i)
{
Console.WriteLine("M2");
}
}
}

M2是实例方法,要先创建一个实例
然后直接
C t = new C()
D cd2 = new D(t.M2)
就可以了

看来LZ没明白静态方法和动态方法的区别。静态方法就是前面加了static关键字的,像LZ写的M1,没加static的就是动态方法,像M2。
静态方法可以直接用类调用,比如C.M1,而动态方法必须要先声明一个对象调用,在你这里就是要生成一个类C的对象,再用对象调用。

就是啊,委托你没定义啊