c# – 具体类如何隐藏它实现的接口的成员

c# – 具体类如何隐藏它实现的接口的成员,第1张

概述我将举一个.NET的例子. ConcurrentDictionary<TKey, TValue> : IDictionary<TKey, TValue>, IDictionary 在这里您可以看到ConcurrentDictionary实现字典接口.但是我无法访问Add< TKey,TValue> ConcurrentDictionary实例中的方法.这怎么可能? IDictionary<int, 我将举一个.NET的例子.
ConcurrentDictionary<TKey,TValue> : IDictionary<TKey,TValue>,IDictionary@H_403_3@  

在这里您可以看到ConcurrentDictionary实现字典接口.但是我无法访问Add< TKey,TValue> ConcurrentDictionary实例中的方法.这怎么可能?

IDictionary<int,int> dictionary = new ConcurrentDictionary<int,int>();dictionary.Add(3,3); //no errorsConcurrentDictionary<int,int> concurrentDictionary = new ConcurrentDictionary<int,int>();concurrentDictionary.Add(3,3); //Cannot access private method here@H_403_3@  

更新:

我知道如何访问它,但我不知道显式实现接口可以允许将访问修饰符更改为内部.它仍然不允许将其设为私有.它是否正确?关于该部分的更详细解释将是有帮助的.另外,我想知道一些有效的用例.

解决方法 它实现为 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?

不,这不正确.

显式接口实现不会更改访问修饰符.它们改变了如何访问以这种方式实现的成员的方式(即要求您使用接口类型的变量).它们仍然是公共成员,但只能使用接口类型而不是实现类型来访问.

总结

以上是内存溢出为你收集整理的c# – 具体类如何隐藏它实现的接口的成员全部内容,希望文章能够帮你解决c# – 具体类如何隐藏它实现的接口的成员所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1240127.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存