c# interface public private
本文关键字:private public interface | 更新日期: 2023-09-27 18:15:40
谁能解释一下接口是如何被强制实现为私有或公共的?通常当我定义一个接口时,每个方法/属性都是公共的。在这个例子中,使用"IEnumerable"产生一个公共方法"GetEnumerator()",但是使用接口"IEnumerable",方法"IEnumerable.GetEnumerator()"默认是私有的。
public class customEnumerable<T> : IEnumerable<T>, IEnumerable
{
public IEnumerator<T> GetEnumerator()
{
throw new NotImplementedException();
}
IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
throw new NotImplementedException();
}
}
谢谢!
私有成员作为接口的一部分是没有意义的,因为接口中定义的所有方法都是公共的。接口是用来定义一组方法、一个角色、一个对象必须始终实现的。
私有方法只是实现细节,它们不打算供公众使用。
根据MSDN
CLR还允许接口包含静态方法字段、常量和静态构造函数。然而,一个cls兼容的接口不能有这些静态成员,因为有些编程语言无法定义或访问它们。事实上,c#禁止接口定义任何静态成员。在此外,CLR不允许接口包含任何实例字段或实例构造函数。
有关更多细节,您可以参考:- c#接口。隐式实现与显式实现