clr via c#インタフェース
8310 ワード
1、共通インタフェースとその定義インタフェースの継承:インタフェースの継承は、あるクラスがインタフェースを継承する場合、そのインタフェースの継承インタフェースを実現しなければならない方法を示す. は、例える、これらの方法を実現しなければならない.
2,インタフェースを実現する時、いくつかの結果
Base's Dispose! Derived's Dispose! Base's Dispose! Derived's Dispose! Base's Dispose!//----Baseを呼び出すDispose Derived's Dispose!//---Derivedを呼び出す.Dispose
3,暗黙的および明示的なインタフェースメソッド実装
このクラスのタイプのメソッドテーブルには、次のものが含まれます. Object定義のすべての虚実列メソッド IDisposeable定義のすべてのインタフェースメソッド.Dispose(); SimpleTypeが導入した新しい方法Dispose()
本列中および前列中でb.Dispose()---を呼び出すとSimpleType定義のDispose()メソッドが呼び出される.
(IDispose)b)を呼び出す.Dispose---はインタフェースのDispose()メソッドを呼び出す.
Dispose IDispose.Dispose
public interface IDisposable{
void Dispose();
}
public interface IEnumerable}{
IEnumerator GetEnumerator();
}
public interface IEnumerable:IEnumerable{
IEnumerator GetEnumerator GetEnumerator()
}
public interface ICollection:IEnumerable,IEnumerable {
void Add(T item);
void Clear();
Boolean Contains(T item);
void CopyTo(T[] array,int32 arrayIndex);
int32 Count{get;}
Boolean IsReadOnly {get;}
}
public class MyClassForInterface : ICollection where T:class,new()
{
public int Count => throw new NotImplementedException();
public bool IsReadOnly => throw new NotImplementedException();
public void Add(T item)
{
throw new NotImplementedException();
}
public void Clear()
{
throw new NotImplementedException();
}
public bool Contains(T item)
{
throw new NotImplementedException();
}
public void CopyTo(T[] array, int arrayIndex)
{
throw new NotImplementedException();
}
public IEnumerator GetEnumerator()
{
throw new NotImplementedException();
}
public bool Remove(T item)
{
throw new NotImplementedException();
}
IEnumerator IEnumerable.GetEnumerator()
{
throw new NotImplementedException();
}
}
2,インタフェースを実現する時、いくつかの結果
public class Base : IDisposable
{
public void Dispose()// , virutal, virtual sealed--- .
{
Console.WriteLine("Base's Dispose!");
}
}
public class Derived : Base, IDisposable
{
public new void Dispose()//new, Dispose .override... .
{
Console.WriteLine("Derived's Dispose!");
}
}
public static class CallBaseDerivedOfInterface
{
public static void CallBaseAndDerived()
{
Base b = new Base();//b , b Base;
Derived d = new Derived();//d d Derived
b.Dispose();// b Dispose
d.Dispose();// d Dispose
((IDisposable)b).Dispose();// b Dispose,Base.Dispose
((IDisposable)d).Dispose();// d Dispose,Derived.Dispose
b = new Derived();//b Base,b Derived
b.Dispose();// Base.Dispose
((IDisposable)b).Dispose();// b Dispose---Derived.Dispose
}
}
//
Base's Dispose! Derived's Dispose! Base's Dispose! Derived's Dispose! Base's Dispose!//----Baseを呼び出すDispose Derived's Dispose!//---Derivedを呼び出す.Dispose
3,暗黙的および明示的なインタフェースメソッド実装
public class SimpleType : IDisposable
{
public void Dispose()
{
Console.WriteLine("Dispose");
}
}
このクラスのタイプのメソッドテーブルには、次のものが含まれます.
本列中および前列中でb.Dispose()---を呼び出すとSimpleType定義のDispose()メソッドが呼び出される.
(IDispose)b)を呼び出す.Dispose---はインタフェースのDispose()メソッドを呼び出す.
public class SimpleType : IDisposable
{
public void Dispose()
{
Console.WriteLine("Dispose");
}
void IDisposable.Dispose()//
{
Console.WriteLine("IDispose.Dispose");
}
}
SimpleType st = new SimpleType();
st.Dispose();
((IDisposable)st).Dispose();// .
//
Dispose IDispose.Dispose