Иногда мне нужен жесткий код для одного метода.
Я могу создать такой массив либо
- локально в самом методе
- static внутри класса
Пример для первого случая:
public int Convert(int i)
{
int[] lookup = new[] {1, 2, 4, 8, 16, 32, 666, /*...*/ };
return lookup[i];
}
Насколько я понимаю, при каждом запуске этого метода будет создан новый массив поиска. Правильно ли это, или является JITer достаточно умным для кэширования и повторного использования массива между вызовами?
Я предполагаю, что ответ отрицательный, поэтому, если я хочу убедиться, что массив кэшируется между вызовами, одним из способов было бы сделать его static
:
Пример для второго случая:
private static readonly int[] lookup = new[] { 1, 2, 4, 8, 16, 32, 666, /*...*/ };
public int Convert(int i)
{
return lookup[i];
}
Есть ли способ сделать это, не загрязняя пространство имен моего класса? Могу ли я каким-либо образом объявить статический массив, который отображается только внутри текущей области?