Я декомпилировал проект с открытым исходным кодом (потому что исходный код для последней версии еще не выпущен). Используя инструмент рефлектора RedGate, он дал мне этот блок кода:
if(somecondition == true)
{
ref Vector3i vectoriRef;
float num17 = length - num;
Vector3i end = vectori3;
(vectoriRef = (Vector3i) &end)[1] = vectoriRef[1] - ((int) num17);
}
somecondition
- логическое значение. length
и num
являются числами, определенными вне кода. vectori3
также определяется вне кода и имеет тип Vector3i. Тип Vector3i, по сути, является этим кодом , но x, y и z хранятся как целые числа.
Когда я пытаюсь скомпилировать этот декомпилированный код, я получаю следующие ошибки:
- Строка 2: только операторы присваивания, вызова, приращения, уменьшения и нового выражения объекта могут использоваться в качестве оператора
- Строка 3:; Ожидается
- Строка 3: недопустимый термин "ref"
- Строка 6: «Vector3i» является «типом», но используется как «переменная»
Есть мысли о том, как я могу исправить этот код, чтобы он правильно компилировался и делал то, для чего он предназначен?
ОБНОВЛЕНИЕ: Оказывается, источник доступен в их хранилище, но вы должны следовать лабиринту ссылок и подсказок, чтобы даже найти его. Спасибо всем, кто написал!