powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / HashSet для .NET2.0
28 сообщений из 28, показаны все 2 страниц
HashSet для .NET2.0
    #38412216
tual
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну собственно и такой вопрос.
Мне надо иметь некую генерик коллекцию с уникальными значениями.
Стандартного класса вроде нет, гугл пока не помог.
Может ктото знает чтото такое, сорцы класса ?
Спасибо
...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38412220
tual
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Могу впринципе внутрь завернуть Dictionary<Tkey, object>
Но думаю не самое красивое решение
...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38412233
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tual,

Iesi.Collections из NHibernate.
...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38412237
tual
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
незя.
Это у меня проект dll к которой ничего нельзя стороннего подключать.
...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38412282
tual
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да и вообще мне просто лист с уникальными значениями надо
так что наверно словарь как вариант и приватное поле подойдет
...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38412295
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tual,
это не я писал Set<T>, а Рихтер, по этому прошу отнестись с пониманием..
...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38412309
tual
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо
...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38412406
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tualМогу впринципе внутрь завернуть Dictionary<Tkey, object>
Но думаю не самое красивое решение
Чем оно не красивое?
...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38412424
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЧем оно не красивое?
у словаря наверное 2 проблемы

жрёт много
нельзя вставить 2,3 экземпляра на один ключ.
ну и в диапазоне нельзя искать )))

а то был бы просто индексированный столбец
...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38412440
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erнельзя вставить 2,3 экземпляра на один ключ.
ну и в диапазоне нельзя искать )))


топикстартер этого не заказывал
...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38412454
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
Вообще то да, словаря вполне предостаточно, если некрасиво выглядит сам словарь, можно от него наследоваться
Код: c#
1.
2.
3.
4.
5.
6.
7.
 public class Set1<T> : Dictionary<T, T>
    {
        public new void Add(T item)
        {
            if (!this.ContainsKey(item)) base.Add(item,item);
        }
    }


или еще финт
Код: c#
1.
2.
3.
4.
5.
6.
7.
 public  class Set<T> : KeyedCollection<T, T>
    {
        public Set() { }
        public Set(IEqualityComparer<T> comparer) : base(comparer) { }
        protected override T GetKeyForItem(T v) { return v; }
 
    }
...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38412456
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38412460
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petalvik,
вообще то да , но 14903327
а тут 14903578 донором и является PowerCollections , да простит меня Р.
...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38412614
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erжрёт много
О каком жоре идет речь?

beg-in-erнельзя вставить 2,3 экземпляра на один ключ.
На то он и IDictionary, чтобы не допускать этого.

beg-in-erну и в диапазоне нельзя искать )))
LINQ

beg-in-erа то был бы просто индексированный столбец
И что ты с ним делал бы?
...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38412617
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиесли некрасиво выглядит сам словарь ...
Что есть "красота" словаря? :)
...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38412710
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
ага добавление, Add, ну что красивого?
или в енумераторе финты разные выдумывать.
Это типа тут не играйте тут рыбу заворачивали ))
...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38412786
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиМСУ,
ага добавление, Add, ну что красивого?
или в енумераторе финты разные выдумывать.
Это типа тут не играйте тут рыбу заворачивали ))
А что ужасного в Add? Ты меня пугаешь :)

Код: c#
1.
2.
var dict = new Dictionary<int, string>();
Enumerable.Range(1, 100).ToList().ForEach(item => dict.Add(item, "так ли страшно?" + item));
...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38412818
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУГде-то в степиМСУ,
ага добавление, Add, ну что красивого?
или в енумераторе финты разные выдумывать.
Это типа тут не играйте тут рыбу заворачивали ))
А что ужасного в Add? Ты меня пугаешь :)

Код: c#
1.
2.
var dict = new Dictionary<int, string>();
Enumerable.Range(1, 100).ToList().ForEach(item => dict.Add(item, "так ли страшно?" + item));


Код: c#
1.
var d = Enumerable.Range(1, 100).ToDictionary(v => i, v => "i = " + i.ToString());
...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38412823
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУbeg-in-erнельзя вставить 2,3 экземпляра на один ключ.
На то он и IDictionary, чтобы не допускать этого.++

HashSet этого тоже не позволяет.
...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38412861
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
да я не пугаю..
автор если некрасиво выглядит сам словарь
имхо красота это субъективное понятие ( в контексте этого вопроса), я и сам в некоторых местах согласен- все полезно что в рот полезло, ну не нравится та оборачивать словарь? ну или пользоваться им в открытом виде - ну не нравится - его право.
ну не хочет он сторонних dll, тоже право. Bот и исходили в ответах из его желаний.Мне вот тоже не нравится, ну не нравится и все.
Мне нравится как у Васи Ложкина - все красиво и понятно, без всяких подводных течений как у Чехова в "Вишнёвом саде"
А если еще обфускатором потоптаться по коду , тогда вообще вопросы исчезнут ))
...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38412952
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К
Код: c#
1.
var d = Enumerable.Range(1, 100).ToDictionary(v => i, v => "i = " + i.ToString());


Cannot convert lambda expression to type 'System.Collections.Generic.IEqualityComparer<i>' because it is not a delegate type.
...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38412956
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи, хоть убей, я не понимаю щастья оборачивать словарь. Это не наш метод
...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38413001
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей К
Код: c#
1.
var d = Enumerable.Range(1, 100).ToDictionary(v => i, v => "i = " + i.ToString());


Cannot convert lambda expression to type 'System.Collections.Generic.IEqualityComparer<i>' because it is not a delegate type.Упс... :-)
...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38413010
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУГде-то в степи, хоть убей, я не понимаю щастья оборачивать словарь. Это не наш метод
Я оборачивал
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
    public class Set<T> : ICollection<T>
    {
        Dictionary<T, bool> _dictionary;
        List<T> _list = new List<T>();

        #region Construct

        public Set()
        {
            _dictionary = new Dictionary<T, bool>();
        }

        public Set(IEqualityComparer<T> comparer)
        {
            _dictionary = new Dictionary<T, bool>(comparer);
        }

        public Set(params T[] items)
            : this()
        {
            AddRange(items);
        }

        public Set(IEqualityComparer<T> comparer, params T[] items)
            : this(comparer)
        {
            AddRange(items);
        }

        public Set(IEnumerable<T> items)
            : this()
        {
            AddRange(items);
        }

        public Set(IEqualityComparer<T> comparer, IEnumerable<T> items)
            : this(comparer)
        {
            AddRange(items);
        }

        #endregion
        
        #region ICollection<T> Members

        public void Add(T item)
        {
            _dictionary.Add(item, false);
            _list.Add(item);
        }

        public void Clear()
        {
            _dictionary.Clear();
            _list.Clear();
        }

        public bool Contains(T item)
        {
            return _dictionary.ContainsKey(item);
        }

        public void CopyTo(T[] array, int arrayIndex)
        {
            _list.CopyTo(array, arrayIndex);
        }

        public int Count
        {
            get { return _list.Count; }
        }

        public bool IsReadOnly
        {
            get { return false; }
        }

        public bool Remove(T item)
        {
            bool result = _dictionary.Remove(item);
            if (result)
            {
                int ind = _list.FindIndex(v => _dictionary.Comparer.Equals(item, v));
                _list.RemoveAt(ind);
            }
            return result;
        }

        #endregion

        #region IEnumerable<T> Members

        public IEnumerator<T> GetEnumerator()
        {
            return _list.GetEnumerator();
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            return ((IEnumerable)_list).GetEnumerator();
        }

        #endregion      
  
        #region Mix

        public void AddRange(params T[] items)
        {
            AddRange((IEnumerable<T>)items);
        }

        public void AddRange(IEnumerable<T> items)
        {
            foreach (T item in items)
                Add(item);
        }

        public void AddIfNotContains(T item)
        {
            if (Contains(item) == false)
                Add(item);
        }

        public T[] ToArray()
        {
            T[] result = new T[Count];
            CopyTo(result, 0);
            return result;
        }

        #endregion
    }

...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38413057
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУжрёт много>>О каком жоре идет речь?
память жрёт

>>> ну и в диапазоне нельзя искать
>>> LINQ
тупой перебор элементов это не поиск.

>>> а то был бы просто индексированный столбец
>>> И что ты с ним делал бы?
полезная вещица в хозяйстве сгодится
...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38413078
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erпамять жрёт
А что не жрёт память?

beg-in-erтупой перебор элементов это не поиск.
А что такое "поиск"?

beg-in-erполезная вещица в хозяйстве сгодится
Ну в хозяйстве и танк может сгодиться, только на кой он мне на рыбалке?
...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38413104
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ, ты ж не девочка ,такие вопросы задавать.
что не жрёт память - едят все. но кто то есть больше чем сосед. дальше офтоп попрёт
...
Рейтинг: 0 / 0
HashSet для .NET2.0
    #38413133
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erМСУ, ты ж не девочка ,такие вопросы задавать.
что не жрёт память - едят все. но кто то есть больше чем сосед. дальше офтоп попрёт
Ответь на мои вопросы.
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / HashSet для .NET2.0
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]