Штоп не писать длиннющие обьявления..
В поиске нахожу только советы как скопировать полностью вместе с содержанием
Как называется строение словаря? Структура? Тип?
получаю в параметре словарь и надо вернуть такой же.
знаю что за С. но хочу быть крутым, если у них поменяется и у меня поменялось аптоматически да и короче писать..
Re: Нельзя что ли скопировать только скелет словаря?
Здравствуйте, nt2000, Вы писали:
N>Штоп не писать длиннющие обьявления.. N>В поиске нахожу только советы как скопировать полностью вместе с содержанием N>Как называется строение словаря? Структура? Тип?
N>получаю в параметре словарь и надо вернуть такой же. N>знаю что за С. но хочу быть крутым, если у них поменяется и у меня поменялось аптоматически да и короче писать..
Ты пьяный что ли? Или гуманитарий?
Сформулируй мысль так, чтобы мы тоже поняли.
Re: Нельзя что ли скопировать только скелет словаря?
Здравствуйте, nt2000, Вы писали:
N>Штоп не писать длиннющие обьявления.. N>В поиске нахожу только советы как скопировать полностью вместе с содержанием N>Как называется строение словаря? Структура? Тип?
N>получаю в параметре словарь и надо вернуть такой же. N>знаю что за С. но хочу быть крутым, если у них поменяется и у меня поменялось аптоматически да и короче писать..
Полагаю, имеются в виду обобщённые типы.
public Dictionary<K,V> CloneDictionary<K,V>(Dictionary<K,V> source) {
return new Dictionary<K,V>();
}
...
var srcDict = new Dictionary<string, int>();
var newDict = CloneDictionary(srcDict); // тип будет Dictionary<string, int>
...
Только вот обычно лучше сразу делать метод или класс обобщённым, тогда такая функция не потребуется.
ARI ARI ARI... Arrivederci!
Re: Нельзя что ли скопировать только скелет словаря?
Здравствуйте, nt2000, Вы писали:
N>получаю в параметре словарь и надо вернуть такой же. N>знаю что за С. но хочу быть крутым, если у них поменяется и у меня поменялось аптоматически да и короче писать..
public D ProcessDictionary<D, K, V>(D dictionary) where D: IDictionary<K,V>, new()
{
var d = new D();
foreach(var item in dictionary)
d[item.Key] = item.Value;
}
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Нельзя что ли скопировать только скелет словаря?
Здравствуйте, nt2000, Вы писали:
N>Штоп не писать длиннющие обьявления..
Я удивлён, что вас ещё не отправили читать Троелсена или Рихтера. Пожалуйста, возьмите исходники linq2db, посмотрите как там написано, это не то чтобы образцовый проект, но хороший. И пишите так же.
Re: Нельзя что ли скопировать только скелет словаря?
Я советую прочитать хотя бы первую половину C# in a Nutshell, и потом вернуться с вопросами на форум. И возможно мы обсудим скелеты словарей, Дистионарии и самоциклы.
Здравствуйте, MozgC, Вы писали:
MC>Я советую прочитать хотя бы первую половину C# in a Nutshell, и потом вернуться с вопросами на форум. И возможно мы обсудим скелеты словарей, Дистионарии и самоциклы.
Да ладно, хоть кто то спрашивает тематические вопросы.
WBR, Igor Evgrafov
Re[2]: Нельзя что ли скопировать только скелет словаря?
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Что такое скелет словаря? Что такое строение словаря? Приведи код, не заставляй всех гадать что ты имел в виду.
как называется <str,int> словаря? я покА назвал скелет(строение от забугорного конструкция) хотя хотелось структура но поиск понимал что я спрашиваю про тип струк..
Re[3]: Нельзя что ли скопировать только скелет словаря?
S>public D ProcessDictionary<D, K, V>(D dictionary) where D: IDictionary<K,V>, new()
S>{
S> var d = new D();
S> foreach(var item in dictionary)
S> d[item.Key] = item.Value;
S>}
вот это мне ненадо d[item.Key] = item.Value;
тогда мне проще объявить словарь и ручками прописать <... , ...>
Re[2]: Нельзя что ли скопировать только скелет словаря?
Здравствуйте, MozgC, Вы писали:
MC>Я советую прочитать хотя бы первую половину C# in a Nutshell, и потом вернуться с вопросами на форум. И возможно мы обсудим скелеты словарей, Дистионарии и самоциклы.
что за Дистионарии? У меня Дистионары! Ненадо сочинять
Re[3]: Нельзя что ли скопировать только скелет словаря?
N>Здравствуйте, Somescout, Вы писали:
N>CloneDictionary naверное копирует вместе с потрохами. сейчас попробую.
да с содержимым. но я вот так сделал
var dic2 = (dic1);dic2.Clear(); то что я хотел!!!
var dic2 = dic1;dic2.Clear(); и так тоже работает. Они равнозначны?
Re[3]: Нельзя что ли скопировать только скелет словаря?
Здравствуйте, nt2000, Вы писали: N>вот это мне ненадо d[item.Key] = item.Value; N>тогда мне проще объявить словарь и ручками прописать <... , ...>
Ну вы же скрываете, чего именно вам надо.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[4]: Нельзя что ли скопировать только скелет словаря?
Здравствуйте, nt2000, Вы писали: N>да с содержимым. но я вот так сделал N>var dic2 = (dic1);dic2.Clear(); то что я хотел!!! N>var dic2 = dic1;dic2.Clear(); и так тоже работает. Они равнозначны?
Да, они равнозначны, но никакого копирования не происходит.
Словарь здесь — только один. На него есть две ссылки. Вот этот код делает ровно то же самое:
var dic2 = dic1;
dic1. Clear();
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Нельзя что ли скопировать только скелет словаря?
Здравствуйте, nt2000, Вы писали:
N>Штоп не писать длиннющие обьявления.. N>В поиске нахожу только советы как скопировать полностью вместе с содержанием N>Как называется строение словаря? Структура? Тип? N>получаю в параметре словарь и надо вернуть такой же. N>знаю что за С. но хочу быть крутым, если у них поменяется и у меня поменялось аптоматически да и короче писать..
using MyDict = System.Collections.Generic.Dictionary<int, string>;
MyDict MyFunction(MyDict d)
{
var result = new MyDict();
foreach (var key in d.Keys)
{
result.Add(key, d[key]);
}
return result;
}
static Main()
{
var d = new MyDict();
d.Add(666, "Satan");
var d2 = MyFunction(d);
Console.WriteLine(d2.Count);
}
Re[3]: Нельзя что ли скопировать только скелет словаря?
Здравствуйте, nt2000, Вы писали:
N>>CloneDictionary naверное копирует вместе с потрохами. сейчас попробую. N>да с содержимым. но я вот так сделал
Вы где-то ошиблись: код, который я привёл создаёт новый пустой экземпляр словаря.
N>var dic2 = (dic1);dic2.Clear(); то что я хотел!!! N>var dic2 = dic1;dic2.Clear(); и так тоже работает. Они равнозначны?
Разберитесь что такое ссылочные типы, потому что ваш код очищает исходный словарь.
var dict1 = new Dictionary<string, string>();
var dict2 = dict1;
dict1.Add("test", "world");
Console.WriteLine(dict2["test"]); // Выведет "world" - т.е. это один и тот же словарь, на который ссылаются
// две переменные