Por favor, explique por qué pasa esta prueba.Operaciones matemáticas con nulo
[Test]
public void TestNullOps()
{
Assert.That(10/null, Is.Null);
Assert.That(10 * null, Is.Null);
Assert.That(10 + null, Is.Null);
Assert.That(10 - null, Is.Null);
Assert.That(10 % null, Is.Null);
Assert.That(null/10, Is.Null);
Assert.That(null * 10, Is.Null);
Assert.That(null + 10, Is.Null);
Assert.That(null - 10, Is.Null);
Assert.That(null % 10, Is.Null);
int zero = 0;
Assert.That(null/zero, Is.Null);
}
No entiendo cómo compila este código.
Parece que cada expresión matemática con retornos nulos Nullable<T>
(por ejemplo, 10/null
es un Nullable<int>
). Pero no veo los métodos de operador en la clase Nullable<T>
. Si estos operadores se toman de int
, ¿por qué la última afirmación no falla?
Tenga en cuenta que '==' tiene reglas ligeramente diferentes aquí; si * ambos * son nulos, es 'verdadero' –
Sí, y lo mismo vale para '! =' por lo que sé, si uno es nulo y el otro no, entonces el resultado es 'verdadero'. – Andrei