C# утверждают. AreNotEqual по сравнению с равняется

Вы пытаетесь создать приложение в реальном времени, такое как чат и визуализация в реальном времени. Чтобы добиться этого, я предлагаю вам написать с NodeJs SOCKET.IO

. Если вы используете PHP, это сделает ваш сервер более загруженным, чем программы JavaScript, такие как socket.io.

Ваш вопрос: Он работает нормально, но я не знаю, есть ли лучшее решение вместо использования СЕССИЙ и интервальной функции?

Ответ: Определенно это плохая практика, которая запускает сервер каждые секунды, даже если нет новых обновлений. Предположим, у вас есть 100 пользователей одновременно, поэтому ваш сервер будет вызываться 100 раз в секунду, что на самом деле больше нагрузки на сервер.

Пример: https://socket.io/get-started/chat

5
задан Boris 25 April 2009 в 23:22
поделиться

2 ответа

Вызов a.Equals (b) возвращает false , поскольку a и b не являются одинаковыми объектами (хотя они, конечно, являются идентичными перечислениями ). Метод Equals , если он не переопределен, автоматически сравнивает объекты по их ссылке, что и происходит в этом случае.

Assert.AreNotEqual немного умнее, чем этот. Он разработан для целей отладки, в отличие от метода Equals , поэтому фактически сравнивает последовательности, полученные в результате двух перечислений, поскольку он распознает IEnumerable как специальный тип. Вы также должны заметить, что это делает другие интересные вещи, такие как возвращение true , когда два параметра численно идентичны, но имеют разные типы значений (например,

9
ответ дан 13 December 2019 в 22:16
поделиться

Я не смотрел исходный код NUnit, чтобы увидеть, как ребята из NUnit закодировали AreNotEqual , Тем не менее, я могу рассказать вам, как это делается для MbUnit с таким же поведением.

Сначала в AssertNotEqual (a, b) проверяет, равны ли ссылки, выполняя такой код:

    if (Object.ReferenceEquals(left, right))
        return true;

В вашем случае это не удастся. Затем он проверяет, являются ли объекты типом IEnumerable. Если они есть, выполните итерацию по ним и сравните, если элементы одинаковы и в том же порядке.

Однако в T тип в IEnumerable более сложен, чем строка, или ValueType в MbUnit AssertNotEqaual (a, b) не завершится ошибкой.

    var a = (IEnumerable<StringBuilder>)(new[] { new StringBuilder("one"), new StringBuilder("two") });
    var b = (IEnumerable<StringBuilder>)(new[] { new StringBuilder("one"), new StringBuilder("two") });

    Assert.IsFalse(a.Equals(b));  // Success
    Assert.AreNotEqual(a, b);     // Success
1
ответ дан 13 December 2019 в 22:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: