C#中的静态事件

Posted on 2008-05-07 17:53  Rock Wang  阅读(6487)  评论(5编辑  收藏  举报
静态事件是类的事件,而不是实例的事件
当你有一个存放全局变量和公用方法的类,想在里面添加一个事件的时候,或许会用到"静态事件".
public delegate void UserListChangedDelegate();

public class myClass
{
   
public event UserListChangedDelegate OnUserListChanged;
   
private static List<string> _userList;
   
public static List<string> UserList
   
{
      
get{return _userList;}
   }

   
//往用户列表中添加用户
   public static void AddUser(string user)
   
{
       _userList.Add(user);
       
if(myClass.OnUserListChanged!=null)
          OnUserListChanged();
   }

   
//从用户列表中移除一个用户
   public static void RemoveUser(string user)
   
{
      _userList.Remove(user);
      
if(myClass.OnUserListChanged!=null)
         OnUserListChanged();
   }

}



public class Test
{
    Public Test()
    
{
           
//绑定事件
           myClass.OnUserListChanged+=new UserListChangedDelegate(UserListChanged);
    }

     
    
//处理事件
    protected void UserListChanged()
    
{
        MessageBox.Show(
"User List Changed!");
    }

}


这样每当调用myClass.AddUser() 或者 myClass.RemoveUser()的时候,都会弹出一个对话框