c#接口

2019-09-30  本文已影响0人  柒轩轩轩轩
public interface IEnumerator
{
  bool MoveNext();
  object Current {get;}
  void Reset();
}
internal class Countdown: IEnumerator
{
  int count = 11;
  public bool MoveNext() => count -- >0;
  public object Current => count;
  pubilc void Reset() { throw new NotSupportedException(); }
}
IEnumerator e = new Countdown();
while (e.MoveNext()) 
  Console.Write(e.Current);

virtual的实现接口成员

public interface IUndoable { void Undo();}

public class TextBox: IUndoable
{
  public virtual void Undo () => Console.WriteLine("TextBox.Undo");
}

public class RichTextBox: TextBox 
{
  public override void Undo() => Console.WriteLine("RichTextBox.Undo");
}
RichTextBox r = new RichTextBox();
r.Undo(); //RichTextBox.Undo
(IUndoable)r).Undo();  //RichTextBox.Undo
((TextBox)r).Undo(); //RichTextBox.Undo

显示实现的接口成员不可以被标记为virtual,也不可以通过寻常的方式重写,但是可以对其进行重新实现

上一篇 下一篇

猜你喜欢

热点阅读