1 //接口中方法 属性 事件等默认都是public 不允许用修饰符修饰 2 public interface IEventInterFace 3 { 4 string this[int index] { get; set; }//索引器 5 List<string> MyList { get; set; } //属性 6 string Name { get; set; }//属性 7 event EventHandler MyEventHandler;//事件 8 void Meth();//方法 9 } 10 11 public class InterFaceTestClass : IEventInterFace 12 { 13 public string this[int index]//索引器实现 14 { 15 16 get 17 { 18 if (index > 0 && index <= MyList.Count - 1) 19 return MyList.ToArray()[index]; 20 return "超出边界"; 21 } 22 set 23 { 24 MyList[index] = value; 25 } 26 } 27 public List<string> MyList { get; set; } //属性实现 28 public string Name { get; set; }//属性实现 29 public void Meth() 30 { 31 Console.WriteLine("该类自己的Meth方法"); 32 } 33 void IEventInterFace.Meth() 34 { 35 Console.WriteLine("显示实现方法,上面的Meth作为该类自己的方法。该方法不能用修饰符修饰 默认为private"); 36 } 37 public event EventHandler MyEventHandler;//事件实现 38 39 public void InvokeMyEventHandler()//调用事件的方法 40 { 41 MyEventHandler(null, null); 42 } 43 } 44 class Program 45 { 46 public static void MyMethed(object sender, EventArgs e) 47 { 48 Console.WriteLine("MyMethed"); 49 } 50 51 static void Main(string[] args) 52 { 53 54 var myClass = new InterFaceTestClass(); 55 myClass.Meth();//调用该类自己的Meth方法 56 IEventInterFace face = myClass; 57 face.Meth();//调用实现接口的Meth方法 58 myClass.MyList = new List<string>() { "a", "b", "c" }; 59 var str = myClass[1];//索引器用法 60 Console.WriteLine(str); 61 62 myClass[1] = "bb"; 63 myClass.MyEventHandler += new EventHandler(MyMethed);//事件添加函数 64 65 myClass.InvokeMyEventHandler(); 66 67 } 68 }