相关疑难解决方法(0)

.NET HashTable与字典 - 字典能否同样快?

我想弄清楚何时以及为什么要使用Dictionary或HashTable.我在这里做了一些搜索,发现有人在谈论字典的一般优点,我完全赞同,这导致拳击和拆箱优势,以获得轻微的性能提升.

但是我也读过字典并不总是按照它们插入的顺序返回对象,它被排序的东西.作为HashTable的地方.据我了解,这导致HashTable在某些情况下更快.

我的问题是,这些情况可能是什么?我上面的假设我错了吗?你可以用什么情况来选择一个在另一个之上,(是的,最后一个有点含糊不清).

.net c# collections dictionary hashtable

269
推荐指数
7
解决办法
18万
查看次数

如何在C#中创建动态属性?

我正在寻找一种方法来创建一个具有一组静态属性的类.在运行时,我希望能够从数据库向此对象添加其他动态属性.我还想为这些对象添加排序和过滤功能.

我如何在C#中执行此操作?

c#

86
推荐指数
5
解决办法
13万
查看次数

是否有像集合这样的字典可以使用其值的属性作为键?

而不是使用Dictionary<TKey,TValue>我想要某种类型的集合类,可以使用值的属性作为键,是否有这样的东西?

.net collections dictionary

7
推荐指数
1
解决办法
226
查看次数

从KeyedCollection获取密钥列表的最有效方法是什么?

我正在寻找一种与泛型字典的Keys属性(类型为KeyCollection)一样高效的方法.

使用Linq select语句可以工作,但每次请求密钥时它都会迭代整个集合,而我相信密钥可能已经在内部存储.

目前我的GenericKeyedCollection类看起来像这样:

public class GenericKeyedCollection<TKey, TItem> : KeyedCollection<TKey, TItem> {
    private Func<TItem, TKey> getKeyFunc;

    protected override TKey GetKeyForItem(TItem item) {
        return getKeyFunc(item);
    }

    public GenericKeyedCollection(Func<TItem, TKey> getKeyFunc) {
        this.getKeyFunc = getKeyFunc;
    }

    public List<TKey> Keys {
        get {
            return this.Select(i => this.GetKeyForItem(i)).ToList();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

更新:感谢您的回答,我将使用以下属性而不是使用Linq进行迭代.

    public ICollection<TKey> Keys {
        get {
            if (this.Dictionary != null) {
                return this.Dictionary.Keys;
            }
            else {
                return new Collection<TKey>(this.Select(this.GetKeyForItem).ToArray());
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

c# dictionary hashtable keyedcollection data-structures

3
推荐指数
1
解决办法
1504
查看次数