Заставить JIT-компилятор исключить проверку границ с помощью классов arraygleton в C# 8 и более ранних версиях.C#

Место общения программистов C#
Anonymous
Заставить JIT-компилятор исключить проверку границ с помощью классов arraygleton в C# 8 и более ранних версиях.

Сообщение Anonymous »

В моем проекте большинство классов (особенно тех, которые содержат много данных) имеют вид:

Код: Выделить всё

public class Polygon
{
////////// Static //////////

public static readonly Polygon[] Items;

////////// Constructor //////////

public readonly int Index;
public readonly Ring[] Rings; // [0, 1+[ 0 : Outer ring, 1+ : Inner ring.

...

public Polygon(int index, Ring[] rings) { ... }

////////// NOT Constructor (but init-only) //////////

public MultiPolygon MultiPolygon;

...
}
Это то, что я называю «массивами». Таковы также его надкласс «Кольцо» и его суперкласс «МультиПолигон». Все экземпляры Polygon создаются одновременно, ни один из них никогда не отбрасывается, а Polygon.Items заполняется всеми указанными экземплярами только один раз.
Я знаю, что JIT-компилятор исключает проверку границ во многих случаях. простые случаи в C#, в которых использование указателей и небезопасного кода часто является избыточным. Как я могу убедиться, что он исключает проверку границ при доступе к Class.Items каждый раз, не переписывая все это с помощью указателей?
Я использую C# 8 только с некоторыми особенности C#9, и я не могу использовать ключевое слово init. (Не уверен, что это будет решением.)

Подробнее здесь: https://stackoverflow.com/questions/790 ... classes-in

Вернуться в «C#»