(Примечание: хотя клонирующаяся версия потенциально полезна, для простой мелкой копии конструктор, которого я упоминаю в другом сообщении, является более оптимальным вариантом.)
, Как глубоко Вы хотите, чтобы копия была, и какую версию.NET Вы используете? Я подозреваю, что LINQ, вызов к ToDictionary, определяя и ключ и селектор элемента, будет самым легким способом пойти при использовании.NET 3.5.
, Например, если Вы не возражаете против значения, являющегося мелким клоном:
var newDictionary = oldDictionary.ToDictionary(entry => entry.Key,
entry => entry.Value);
, Если Вы уже вынудили T реализовывать ICloneable:
var newDictionary = oldDictionary.ToDictionary(entry => entry.Key,
entry => (T) entry.Value.Clone());
(Те не тестируются, но должны работать.)
try:
import simplejson as json
except ImportError:
import json
конечно, он не работает в случаях, когда в python-2.5 у вас нет Simplejson
установлен, как и в вашем примере.
Though the ImportError approach (SilentGhost's answer) is definitely best for this example, anyone wanting to do that __version__
thing would use something like this:
import sys
if sys.version_info < (2, 6):
import simplejson as json
else:
import json
To be absolutely clear though, this is not the "best way" to do what you wanted... it's merely the correct way to do what you were trying to show with __version__
.