Произвольная индексация в массивах
От: Loony  
Дата: 10.02.07 13:07
Оценка:
Кто может подсказать, есть ли возможность индексы в массиве назначать самому, так как нужна индексация не попорядку и довольно большими числами.
Re: Произвольная индексация в массивах
От: Amidlokos Россия  
Дата: 10.02.07 13:22
Оценка: +1 -1
Здравствуйте, Loony, Вы писали:

L>Кто может подсказать, есть ли возможность индексы в массиве назначать самому, так как нужна индексация не попорядку и довольно большими числами.


В .NET-е не силён, однако это уже называется "хэш"
WARNING: expression "to_be || !to_be" is always true
Re[2]: Произвольная индексация в массивах
От: Norex Россия  
Дата: 11.02.07 17:53
Оценка: 1 (1)
Здравствуйте, Amidlokos, Вы писали:

A>Здравствуйте, Loony, Вы писали:


L>>Кто может подсказать, есть ли возможность индексы в массиве назначать самому, так как нужна индексация не попорядку и довольно большими числами.


Для этого лучше использова Dictionary или Hashtable.
У каждого объекта есть свойства GetHash() вот они-то и выступают при построении индекса.

Если есть действительно необходимость, то можно перегрузить эти функции.
Re[3]: Произвольная индексация в массивах
От: Amidlokos Россия  
Дата: 12.02.07 07:40
Оценка:
Здравствуйте, Norex, Вы писали:

N>Hashtable.


Сам написал про хэш и при том сам за слово "хэш" влепил минус

Говорю же — не силён в .NET-е, но что хэш будет — однозначно. Так может человека слово "хэш" на мысль натолкнёт. Ну хорошо, в следующий раз буду молчать
WARNING: expression "to_be || !to_be" is always true
Re[4]: Произвольная индексация в массивах
От: Pavel M. Россия  
Дата: 12.02.07 07:48
Оценка:
Здравствуйте, Amidlokos, Вы писали:

A>Здравствуйте, Norex, Вы писали:


N>>Hashtable.


A>Сам написал про хэш и при том сам за слово "хэш" влепил минус


A>Говорю же — не силён в .NET-е, но что хэш будет — однозначно. Так может человека слово "хэш" на мысль натолкнёт. Ну хорошо, в следующий раз буду молчать


что хеш (в терминах объектов и .НЕТ) — значение, зависящее от состояния объекта и подчиняющееся некоторым правилам (точно не помню, но что-то вроде, что всегда должен меняться при изменении состояния, напрямую зависить от состояния, два объекта с одинаковым состоянием должны возвращать один хеш).

рефлектор говорит для Int32,например


public override int GetHashCode()
{
      return this;
}


для String


[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
public override unsafe int GetHashCode()
{
      fixed (char* text1 = ((char*) this))
      {
            char* chPtr1 = text1;
            int num1 = 0x15051505;
            int num2 = num1;
            int* numPtr1 = (int*) chPtr1;
            for (int num3 = this.Length; num3 > 0; num3 -= 4)
            {
                  num1 = (((num1 << 5) + num1) + (num1 >> 0x1b)) ^ numPtr1[0];
                  if (num3 <= 2)
                  {
                        break;
                  }
                  num2 = (((num2 << 5) + num2) + (num2 >> 0x1b)) ^ numPtr1[1];
                  numPtr1 += 2;
            }
            return (num1 + (num2 * 0x5d588b65));
      }
}


--------------------------
less think — do more
Re[2]: Произвольная индексация в массивах
От: fmiracle  
Дата: 12.02.07 08:20
Оценка:
Здравствуйте, Amidlokos, Вы писали:

A>В .NET-е не силён, однако это уже называется "хэш"


Верно, но все же хэшем это называется только в некотрых языках типа Перла
Правильнее это называть "Справочником".

Как уже сказали — в дотнете это либо дженерик Dictionary<key, value> либо старый HashTable либо более специфичные типа ListDictionary и HybridDictionary.
Re: Произвольная индексация в массивах
От: Aen Sidhe Россия Просто блог
Дата: 12.02.07 10:03
Оценка: 1 (1)
Здравствуйте, Loony, Вы писали:

L>Кто может подсказать, есть ли возможность индексы в массиве назначать самому, так как нужна индексация не попорядку и довольно большими числами.


Это:
System.Collections.Generic.Dictionary<int, MyObject>
С уважением, Анатолий Попов.
ICQ: 995-908
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.