隐式定义只是将接口要求的方法/属性等直接作为公共方法添加到类中。
显式定义强制成员仅在直接使用接口而不使用底层实现时才被公开。这在大多数情况下是首选。
隐含的是当你通过你的类的成员定义你的接口。显式是在接口上的类中定义方法的时候。我的意思:IList.CopyTo将隐含实施为:
public void CopyTo(Array array, int index)
{
throw new NotImplementedException();
}
并明确表示为:
void ICollection.CopyTo(Array array, int index)
{
throw new NotImplementedException();
}
不同之处在于隐式地通过你所创建的类来访问它,当它被转换为该类时,以及当它被转换为接口时。显式实现允许它只能在作为接口本身进行转换时才可访问。
MyClass myClass = new MyClass(); // Declared as concrete class
myclass.CopyTo //invalid with explicit
((IList)myClass).CopyTo //valid with explicit.
主要使用显式来保持实现干净,或者当需要两个实现时。但,一般很少使用它。
相似问题