Вчера я написал несколько модульных тестов, которые проходят. NET 4.6.1, но терпят неудачу. NET core 3.0, потому что число экземпляров массива, сгенерированных во время этого теста, различно в обеих средах. После некоторых исследований выяснилось, что количество пустых массивов, созданных с помощью LINQ, отличается. Я наконец смог свалить его на этот тест:
[Test]
public void ArrayTest()
{
var numbers = Enumerable.Range(1, 5);
int[] items1 = numbers.Where(i => i > 5).ToArray();
int[] items2 = numbers.Where(i => i > 5).ToArray();
Assert.IsFalse(items1 == items2); // fails in .NET core 3 but passes in .NET 461
Assert.IsFalse(items1.Equals(items2)); // fails in .NET core 3 but passes in .NET 461
}
Мой вопрос: кто-нибудь знает, где реализация отличается? Может ли ToArray () возвращать одноэлементный экземпляр Array.Empty <> в ядре. NET, но не в. NET, если в коллекции нет элементов?