需要一个.NET字典<string,object>,只需要更多的功能

Ron*_*rby 2 .net c#

我需要一个字典,但我还需要在字典中存储关于该对象的布尔值.什么是最好的方式.

类似的东西Dictonary<string,object,bool>是理想的,但不存在.

我的第一个想法是:

public class SomeObject
{
    public object Value { get; set; }
    public bool Flag { get; set; }
}
// and then use:
Dictionary<string,SomeObject> myDictionary;
Run Code Online (Sandbox Code Playgroud)

我的第二个想法是实现IDictionary<string,object>并包含两个由实现的方法和属性访问器操纵的字典.它们必须保持同步:

class DataDictionary : IDictionary<string, object>
{
    private Dictionary<string, bool> _clientSideFlags = new Dictionary<string, bool>();
    private Dictionary<string, object> _data = new Dictionary<string, object>();

    // implemented methods, etc.
}
Run Code Online (Sandbox Code Playgroud)

我的第三个想法是看看StackOverflow的人会做些什么.

Ree*_*sey 14

你可以使用:

Dictionary<string, KeyValuePair<object,bool>>
Run Code Online (Sandbox Code Playgroud)

这允许您存储a KeyValuePair<object,bool>,它使用BCL类型提供您的自定义类.

话虽这么说,我经常发现自己使用自定义类或结构来代替.就个人而言,我发现实现我的价值存储的自定义类型往往随着时间的推移比使用更容易维护KeyValuePair,Tuple或其他非特定的类型.如果我有一个具有适当名称的自定义类型,一年后的使用情况会更加明显.


And*_*are 6

按照你的第一个想法 - 它简单,有效,易于理解.是的,自定义类型可能感觉有点过分,但它增加了代码的可读性.以后维护此代码的任何人都会感谢你.


Jam*_*ran 6

我会按照你的第一个想法去做.

而且,我远离你的第二个想法.您将进行大量编码,只是为了生成一个在运行时执行两次工作(两次查找)的类.一个失败者到处都是.