0

我需要一个收藏

  • 包含一组链接到双精度的对象。
  • 这些对的顺序应该由我任意设置(基于我从数据库获得的 int)并且在整个生命周期中是静态的。
  • 条目的数量会很小(0 ~ 20),但会有所不同。
  • 集合应该是可迭代的。
  • 我不必在集合中搜索任何东西。
  • 集合初始化后,双精度值将被更改。
  • 我想使用现有的数据类型(没有新类),因为它将在我的 asp.net mvc 控制器、视图和服务中使用,我不希望它们都依赖于这个愚蠢的持有者的库班级。

我想

IDictionary<int, KeyvaluePair<TheType, double>>

可以解决问题,但是我无法在初始化后设置双精度。

--Edit--
我发现 linq 2 sql visual studio 生成的类实际上是部分类,因此您可以根据需要添加任何内容。我通过向部分类添加一个双字段来解决我的问题。
感谢大家提出的答案。

4

4 回答 4

2

听起来你可能只想要一个等价的KeyValuePair,但可变的。鉴于您仅将其用作一对值而不是键值对,您可以这样做:

public class MutablePair<TFirst, TSecond>
{
    public TFirst First { get; set; }
    public TSecond Second { get; set; }

    public MutablePair()
    {
    }

    public MutablePair(TFirst first, TSecond second)
    {
        First = first;
        Second = second;
    }
}

这不会覆盖 GetHashCode 或 Equals,因为您实际上并没有使用它们(因为它位于值位置)。

于 2008-11-21T11:10:47.780 回答
1
struct MyPair
{
    public object TheType;
    public double Value;
}

MyPair[] MyColleccyion = new MyPair[20]; 
于 2008-11-21T11:13:15.560 回答
0

好吧,KeyValuePair 是不可变的(这是一件好事),所以你必须替换 KeyValuePair 的整个值,而不仅仅是它的一部分:

yourDict[10] = new KeyValuePair<TheType, Double>(yourDict[10].Key, newValue);

...或者像Jon Skeet一样思考。嘎。:)

于 2008-11-21T11:12:12.163 回答
0

这个怎么样

public class ListThing<TKey, TValue> : Dictionary<TKey, TValue>
{
    public double DoubleThing { get; set; }

    public ListThing(double value)
    {
        DoubleThing = value;
    }
}
于 2008-11-21T11:13:19.460 回答