Что я могу использовать вместо «long», который может быть клонируемым? - PullRequest
1 голос
/ 12 августа 2010

Что я могу использовать вместо «long», который может быть клонирован?

Ниже приведен код, для которого я получаю ошибку, поскольку long не клонируется.

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 ]

6 голосов
/ 12 августа 2010

Нет смысла клонировать long.

Вам следует использовать обычный Dictionary<string, long>.

Если вы хотите клонировать сам словарь, вы можете написать new Dictionary<string, long>(otherDictionary).

1 голос
/ 12 августа 2010
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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...