使用什么数据类型?

时间:2008-11-21 11:01:02

标签: c# types

我需要一个

的集合
  • 包含一组链接到double的对象。
  • 这些对的顺序应该是我自己设置的(基于我从数据库中获取的int)并且在整个生命周期中都是静态的。
  • 条目数量很少(0~20)但不一样。
  • 该集合应该是可以理解的。
  • 我不必搜索任何内容。
  • 在收集初始化后,双倍将被更改。
  • 我想使用现有的数据类型(没有新的类),因为它将在我的asp.net mvc控制器,视图和服务中使用,我不希望它们全部依赖于库只是为了这个愚蠢的持有人阶级。

我想

IDictionary<int, KeyvaluePair<TheType, double>>

会做的伎俩,但是我不能在init之后设置double。

- 编辑 -
我发现linq 2 sql visual studio thingy生成的类实际上是部分类,所以你可以随意添加它们。我通过在部分类中添加一个双字段来解决我的问题 谢谢大家提出的答案。

4 个答案:

答案 0 :(得分: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,因为您实际上并没有使用它们(因为它位于值位置)。

答案 1 :(得分:1)

struct MyPair
{
    public object TheType;
    public double Value;
}

MyPair[] MyColleccyion = new MyPair[20]; 

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

这个怎么样

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

    public ListThing(double value)
    {
        DoubleThing = value;
    }
}