Нельзя что ли скопировать только скелет словаря?
От: nt2000  
Дата: 21.11.19 11:04
Оценка: :))
Штоп не писать длиннющие обьявления..
В поиске нахожу только советы как скопировать полностью вместе с содержанием
Как называется строение словаря? Структура? Тип?

получаю в параметре словарь и надо вернуть такой же.
знаю что за С. но хочу быть крутым, если у них поменяется и у меня поменялось аптоматически да и короче писать..
Re: Нельзя что ли скопировать только скелет словаря?
От: RushDevion Россия  
Дата: 21.11.19 11:11
Оценка: 3 (1) +6 :))
Здравствуйте, nt2000, Вы писали:

N>Штоп не писать длиннющие обьявления..

N>В поиске нахожу только советы как скопировать полностью вместе с содержанием
N>Как называется строение словаря? Структура? Тип?

N>получаю в параметре словарь и надо вернуть такой же.

N>знаю что за С. но хочу быть крутым, если у них поменяется и у меня поменялось аптоматически да и короче писать..

Ты пьяный что ли? Или гуманитарий?
Сформулируй мысль так, чтобы мы тоже поняли.
Re: Нельзя что ли скопировать только скелет словаря?
От: Ночной Смотрящий Россия  
Дата: 21.11.19 11:22
Оценка: 3 (1)
Здравствуйте, nt2000, Вы писали:

N>Как называется строение словаря? Структура? Тип?


Что такое скелет словаря? Что такое строение словаря? Приведи код, не заставляй всех гадать что ты имел в виду.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re: Нельзя что ли скопировать только скелет словаря?
От: Somescout  
Дата: 21.11.19 11:32
Оценка: 3 (1)
Здравствуйте, 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: Нельзя что ли скопировать только скелет словаря?
От: Sinclair Россия https://github.com/evilguest/
Дата: 21.11.19 14:11
Оценка: 7 (2)
Здравствуйте, 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: Нельзя что ли скопировать только скелет словаря?
От: Слава  
Дата: 21.11.19 15:04
Оценка: 1 (1)
Здравствуйте, nt2000, Вы писали:

N>Штоп не писать длиннющие обьявления..


Я удивлён, что вас ещё не отправили читать Троелсена или Рихтера. Пожалуйста, возьмите исходники linq2db, посмотрите как там написано, это не то чтобы образцовый проект, но хороший. И пишите так же.
Re: Нельзя что ли скопировать только скелет словаря?
От: MozgC США http://nightcoder.livejournal.com
Дата: 21.11.19 19:43
Оценка: 1 (1) +2 :)
Я советую прочитать хотя бы первую половину C# in a Nutshell, и потом вернуться с вопросами на форум. И возможно мы обсудим скелеты словарей, Дистионарии и самоциклы.
Отредактировано 21.11.2019 19:46 MozgC . Предыдущая версия .
Re[2]: Нельзя что ли скопировать только скелет словаря?
От: nt2000  
Дата: 21.11.19 20:36
Оценка:
Здравствуйте, RushDevion, Вы писали:

RD>Сформулируй мысль так, чтобы мы тоже поняли.

во по этой причине и поиск меня не понимает..

приходит словарь например Dic<str,int>
и мне надо такой же создать
var myDic = new Dic<str,int> ;
a xoteлось бы как бы наследовать
Dic myDic ;

i как называется <str,int> словаря? я временно назвал скелет хотя напрашивалос структура ни поиск упорно толдычит про тип струк..
Re[2]: Нельзя что ли скопировать только скелет словаря?
От: GarryIV  
Дата: 21.11.19 20:40
Оценка: 3 (1) +2
Здравствуйте, MozgC, Вы писали:

MC>Я советую прочитать хотя бы первую половину C# in a Nutshell, и потом вернуться с вопросами на форум. И возможно мы обсудим скелеты словарей, Дистионарии и самоциклы.


Да ладно, хоть кто то спрашивает тематические вопросы.
WBR, Igor Evgrafov
Re[2]: Нельзя что ли скопировать только скелет словаря?
От: nt2000  
Дата: 21.11.19 20:41
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Что такое скелет словаря? Что такое строение словаря? Приведи код, не заставляй всех гадать что ты имел в виду.


как называется <str,int> словаря? я покА назвал скелет(строение от забугорного конструкция) хотя хотелось структура но поиск понимал что я спрашиваю про тип струк..
Re[3]: Нельзя что ли скопировать только скелет словаря?
От: Ночной Смотрящий Россия  
Дата: 21.11.19 20:46
Оценка: 3 (1)
Здравствуйте, nt2000, Вы писали:

N>как называется <str,int> словаря?


Type parameters

N> я покА назвал скелет(строение от забугорного конструкция) хотя хотелось структура но поиск понимал что я спрашиваю про тип струк..


Тебе уже ответили — Re: Нельзя что ли скопировать только скелет словаря?
Автор: Sinclair
Дата: 21.11.19
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[2]: Нельзя что ли скопировать только скелет словаря?
От: nt2000  
Дата: 21.11.19 20:49
Оценка:
Здравствуйте, Somescout, Вы писали:

.

S>Полагаю, имеются в виду обобщённые типы.


S>public Dictionary<K,V> CloneDictionary<K,V>(Dictionary<K,V> source) {
S>    return new Dictionary<K,V>();
S>}
S>


S>
S>...
S>  var srcDict = new Dictionary<string, int>();

S>  var newDict = (srcDict); // тип будет Dictionary<string, int>
S>...
S>


S>Только вот обычно лучше сразу делать метод или класс обобщённым, тогда такая функция не потребуется.


му это сложно тогда я оставлю простое объявление словаря.
я думал есть подобие наследования
srcDict newDict ;

CloneDictionary naверное копирует вместе с потрохами. сейчас попробую.
Re[2]: Нельзя что ли скопировать только скелет словаря?
От: nt2000  
Дата: 21.11.19 20:53
Оценка:
Здравствуйте, Sinclair, Вы писали:
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]: Нельзя что ли скопировать только скелет словаря?
От: nt2000  
Дата: 21.11.19 20:57
Оценка: :)))
Здравствуйте, MozgC, Вы писали:

MC>Я советую прочитать хотя бы первую половину C# in a Nutshell, и потом вернуться с вопросами на форум. И возможно мы обсудим скелеты словарей, Дистионарии и самоциклы.

что за Дистионарии? У меня Дистионары! Ненадо сочинять
Re[3]: Нельзя что ли скопировать только скелет словаря?
От: nt2000  
Дата: 21.11.19 21:08
Оценка:
N>Здравствуйте, Somescout, Вы писали:

N>CloneDictionary naверное копирует вместе с потрохами. сейчас попробую.


да с содержимым. но я вот так сделал
var dic2 = (dic1);dic2.Clear(); то что я хотел!!!
var dic2 = dic1;dic2.Clear(); и так тоже работает. Они равнозначны?
Re[3]: Нельзя что ли скопировать только скелет словаря?
От: Sinclair Россия https://github.com/evilguest/
Дата: 22.11.19 03:42
Оценка:
Здравствуйте, nt2000, Вы писали:
N>вот это мне ненадо d[item.Key] = item.Value;
N>тогда мне проще объявить словарь и ручками прописать <... , ...>
Ну вы же скрываете, чего именно вам надо.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[4]: Нельзя что ли скопировать только скелет словаря?
От: Sinclair Россия https://github.com/evilguest/
Дата: 22.11.19 04:00
Оценка: 3 (1)
Здравствуйте, nt2000, Вы писали:
N>да с содержимым. но я вот так сделал
N>var dic2 = (dic1);dic2.Clear(); то что я хотел!!!
N>var dic2 = dic1;dic2.Clear(); и так тоже работает. Они равнозначны?
Да, они равнозначны, но никакого копирования не происходит.
Словарь здесь — только один. На него есть две ссылки. Вот этот код делает ровно то же самое:

var dic2 = dic1;
dic1. Clear();
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Нельзя что ли скопировать только скелет словаря?
От: AlexRK  
Дата: 22.11.19 05:58
Оценка: 3 (1)
Здравствуйте, 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]: Нельзя что ли скопировать только скелет словаря?
От: Слава  
Дата: 22.11.19 06:03
Оценка: 1 (1)
Здравствуйте, nt2000, Вы писали:

N>a xoteлось бы как бы наследовать

N>Dic myDic ;

Вам за такими фокусами либо в Haskell, либо в Scala, либо в С++ на крайний случай.
Re[4]: Нельзя что ли скопировать только скелет словаря?
От: Somescout  
Дата: 22.11.19 07:08
Оценка: 3 (1)
Здравствуйте, 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" - т.е. это один и тот же словарь, на который ссылаются
                                  //                   две переменные
ARI ARI ARI... Arrivederci!
Отредактировано 22.11.2019 7:09 Somescout . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.