我可以使用什么代替可以克隆的“长”?

时间:2010-08-12 01:34:36

标签: c# long-integer cloneable

我可以使用什么代替可以克隆的“长”?

请参阅下面我在此处收到错误的代码,因为长期不可克隆。

public static CloneableDictionary<string, long> returnValues = new CloneableDictionary<string, long>();

编辑:我忘了提到我想使用我找到的以下代码(见下文)。

public class CloneableDictionary<TKey, TValue> : Dictionary<TKey, TValue> where TValue : ICloneable
{
    public IDictionary<TKey, TValue> Clone()
    {
        var clone = new CloneableDictionary<TKey, TValue>();

        foreach (KeyValuePair<TKey, TValue> pair in this)
        {
            clone.Add(pair.Key, (TValue)pair.Value.Clone());
        }
        return clone;
    }
}

2 个答案:

答案 0 :(得分:6)

克隆long毫无意义。

您应该使用常规Dictionary<string, long>

如果要克隆字典本身,可以编写new Dictionary<string, long>(otherDictionary)

答案 1 :(得分:1)

public class CloneableDictionary<TKey, TValue> : Dictionary<TKey, TValue>
{
    public IDictionary<TKey, TValue> Clone()
    {
        var clone = new CloneableDictionary<TKey, TValue>();

        foreach (KeyValuePair<TKey, TValue> pair in this)
        {
            ICloneable clonableValue = pair.Value as ICloneable;
            if (clonableValue != null)
                clone.Add(pair.Key, (TValue)clonableValue.Clone());
            else
                clone.Add(pair.Key, pair.Value);
        }

        return clone;
    }
}