Это субъективно, но у меня проблемы с ускорением LLVM JIT. Подергивание больших массивов кода занимает в 50 раз больше времени, чем простая их интерпретация даже с включенной ленивой компиляцией.
Так что мне было интересно, как я могу ускорить подергивание, У Foo есть идентификатор (int) a) "Хороший" ли приведенный ниже код? б) Что я должен вернуть, если оба значения равны нулю? // оператор перегрузки == общедоступный статический логический оператор == (Foo a, Foo b) {...
У меня есть объект типа Foo
.
Foo имеет Id
(int)
a) "Хороший" ли приведенный ниже код?
б) Что я должен вернуть, если оба значения равны нулю?
// overload operator ==
public static bool operator ==(Foo a, Foo b)
{
if (ReferenceEquals(x, y))
{
return true;
}
if (x == null && y == null)
{
return // ???
}
if (x == null || y == null)
{
return false;
}
return x.Id == y.Id; // Ids are the same
}
public static bool Equals(Foo x, Foo y)
{
return x == y;
}
РЕДАКТИРОВАТЬ:
c) Должен ли метод Equals вызывать == оператор или наоборот?
Последний вопрос
г) Возможно ли, что
ReferenceEquals (x, y) == true
AND x.Id! = Y.Id
?