我需要一个
的集合我想
IDictionary<int, KeyvaluePair<TheType, double>>
会做的伎俩,但是我不能在init之后设置double。
- 编辑 -
我发现linq 2 sql visual studio thingy生成的类实际上是部分类,所以你可以随意添加它们。我通过在部分类中添加一个双字段来解决我的问题
谢谢大家提出的答案。
答案 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;
}
}