Исправить исключение NullReferenceException можно с помощью Null-условных операторов в c # 6 и написать меньше кода для обработки нулевых проверок.
Он используется для проверки нуля до выполнения доступа к члену (?. ) или index (? [).
Пример
var name = p?.Spouse?.FirstName;
эквивалентен:
if (p != null)
{
if (p.Spouse != null)
{
name = p.Spouse.FirstName;
}
}
В результате имя будет нулевым когда p равно null или когда p.Spouse имеет значение null.
В противном случае имени переменной будет присвоено значение p.Spouse.FirstName.
Для получения дополнительной информации: Операторы с нулевым условием
Если у вас есть функция atan2 () в вашей математической библиотеке по выбору:
signed_angle = atan2(b.y,b.x) - atan2(a.y,a.x)
То, что вы хотите использовать, часто называют «продуктом точка-точка», т. е. найти вектор, перпендикулярный одному из векторов, а затем найти точечный продукт с другим вектором.
if(a.x*b.y - a.y*b.x < 0)
angle = -angle;
Вы также можете сделать это:
angle = atan2( a.x*b.y - a.y*b.x, a.x*b.x + a.y*b.y );