c#事件的遇到有关问题
c#事件的遇到问题
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _02事件
{
delegate void Dele();//定义一个委托1
class Bank
{
public event Dele ji;//声明一个事件2
public void Hji()//4触发事件
{
ji();
}
}
class Phone
{
public static void Kok()
{
Console.WriteLine("你触发了这个事件");//3
}
}
class Program
{
static void Main(string[] args)
{
Bank fg=new Bank();
Phone op=new Phone();
fg.ji += new Bank.Dele(op.Kok);//这行代码会报错,各位大神帮帮忙
Console.ReadKey();
}
}
}
------解决思路----------------------
------解决思路----------------------
1、Phone类的Kok方法是静态的,你不能通过实例调用,正确的调用方式:
2、Bank类的ji是实例变量,需要通过实例调用,调用方式如下:
3、fg.ji是一个事件,注册事件需要使用委托,正确调用方式如下:
------解决思路----------------------
3、注册事件后触发事件,事件才会执行,触发事件的代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _02事件
{
delegate void Dele();//定义一个委托1
class Bank
{
public event Dele ji;//声明一个事件2
public void Hji()//4触发事件
{
ji();
}
}
class Phone
{
public static void Kok()
{
Console.WriteLine("你触发了这个事件");//3
}
}
class Program
{
static void Main(string[] args)
{
Bank fg=new Bank();
Phone op=new Phone();
fg.ji += new Bank.Dele(op.Kok);//这行代码会报错,各位大神帮帮忙
Console.ReadKey();
}
}
}
------解决思路----------------------
Bank fg = new Bank();
fg.ji += Phone.Kok;
fg.Hji();
Console.ReadKey();
------解决思路----------------------
1、Phone类的Kok方法是静态的,你不能通过实例调用,正确的调用方式:
Phone.Kok();
2、Bank类的ji是实例变量,需要通过实例调用,调用方式如下:
fg.ji
//或者
new Bank().ji;
3、fg.ji是一个事件,注册事件需要使用委托,正确调用方式如下:
fg.ji += Phone.Kok;
//或者
fg.ji += new Dele(fg_ji);
static void fg_ji()
{
Phone.Kok();
}
------解决思路----------------------
3、注册事件后触发事件,事件才会执行,触发事件的代码如下
fg.Hji();