我将举一个.NET的例子.
ConcurrentDictionary<TKey,TValue> : IDictionary<TKey,TValue>,IDictionary
在这里您可以看到ConcurrentDictionary实现字典接口.但是我无法访问Add< TKey,TValue> ConcurrentDictionary实例中的方法.这怎么可能?
IDictionary<int,int> dictionary = new ConcurrentDictionary<int,int>(); dictionary.Add(3,3); //no errors ConcurrentDictionary<int,int> concurrentDictionary = new ConcurrentDictionary<int,int>(); concurrentDictionary.Add(3,3); //Cannot access private method here
更新:
我知道如何访问它,但我不知道显式实现接口可以允许将访问修饰符更改为内部.它仍然不允许将其设为私有.它是否正确?关于该部分的更详细解释将是有帮助的.另外,我想知道一些有效的用例.
解决方法
它实现为
explicit interface implementation,这意味着你需要一个IDictionary的变量< TKey,TValue>键入以访问它.
请参阅显式接口实现部分下的ConcurrentDictionary<TKey,TValue>
文档.
如果将并发字典转换为IDictionary< TKey,则可以在其上调用Add.
I didn’t kNow explicitly implementing an interface Could allow changing access modifiers to internal. It still doesn’t allow making it private though. Is this correct?
不,这不正确.
显式接口实现不会更改访问修饰符.它们改变了如何访问以这种方式实现的成员的方式(即要求您使用接口类型的变量).它们仍然是公共成员,但只能使用接口类型而不是实现类型来访问.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。