Я сомневаюсь, что есть функциональная разница или большая, если вообще таковая, разница в производительности, но версия Math.Sign немного более очевидна. Особенно в вашем примере, где Тип rayDirX не объявлен. Но это довольно тонко, и я бы не стал критиковать тебя за использование.
EDIT:
И еще одна вещь, в приведенном выше примере есть небольшая ошибка. В случае 0
Math.Sign вернет 0
. Вот декомпилированный код вне фреймворка для Math.Sign:
public static int Sign(int value)
{
if (value < 0)
{
return -1;
}
if (value > 0)
{
return 1;
}
return 0;
}