gpt4 book ai didi

c# - 具体类如何隐藏它实现的接口(interface)的成员

转载 作者:太空狗 更新时间:2023-10-29 20:49:21 26 4
gpt4 key购买 nike

我将举一个 .NET 的例子。

ConcurrentDictionary<TKey, TValue> : IDictionary<TKey, TValue>, IDictionary

在这里您可以看到实现字典接口(interface)的 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

更新:

我知道如何访问它,但我不知道显式实现接口(interface)可以允许将访问修饰符更改为内部。它仍然不允许将其设为私有(private)。这样对吗?关于该部分的更详细的解释会有所帮助。另外,我想知道一些有效的用例。

最佳答案

因为 IDictionary.Add 方法是 explicitly implemented通过 ConcurrentDictionary。

要从类中访问它而不必将变量声明为 IDictionary,请将其转换为所需的接口(interface):

((IDictionary)concurrentDictionary).Add(3, 3)

关于c# - 具体类如何隐藏它实现的接口(interface)的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14280246/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com