Я декомпилировал проект с открытым исходным кодом (потому что исходный код последней версии еще не выпущен). Используя инструмент RedGate Reflector, он дал мне этот блок кода:
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» — это «тип», но используется как «переменная».
Любые мысли о том, как я могу исправить этот код, чтобы он правильно компилировался и делал то, для чего он был предназначен?
ОБНОВЛЕНИЕ: оказалось, что исходный код есть в их репозитории, но чтобы найти его, вам нужно пройти по лабиринту ссылок и подсказок. Спасибо всем, кто опубликовал!