gpt4 book ai didi

c# - 如何重载 [] 运算符?

转载 作者:太空狗 更新时间:2023-10-29 18:03:45 27 4
gpt4 key购买 nike

我正在创建一个将字典作为私有(private)成员填充的类。我想公开字典的值而不公开字典本身(以只读方式)。我可以轻松地创建一个属性来公开 _dictionary.Keys,但如何重载 [] 以便 MyClass[key] 返回 _dictionary[key]?

我想我可能需要实现一个接口(interface),但我不确定是哪个...

最佳答案

我很确定这就是您想要的:

public TValue this[TKey key] {
get { return _dictionary[key]; }
}

如果你想实现一个接口(interface)来向客户端代码表明你的类可以通过类型为 TKey 的索引访问,最接近的匹配项(据我所知)是 IDictionary<TKey, TValue> .

不幸的是,IDictionary<TKey, TValue>有一大堆成员违反了您的只读要求,这意味着您必须显式实现很多成员才能抛出 NotImplementedException (或类似的)当它们被调用时:即 this 的 setter , Add , Clear , 和 Remove .

也许有一个不同的界面更适合这个目的(类似于 IReadOnlyDictionary<TKey, TValue> ?);我只是没遇到过。

当然,如果您打算拥有多个提供与此类似功能的类,您也可以编写自己的接口(interface)。

关于c# - 如何重载 [] 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2859027/

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