Предупреждение компилятора (уровень 3) CS1718
Сравнение выполнено с той же переменной. Действительно следует выполнять такое сравнение?
Если вы хотите сравнить что-то другое, исправьте инструкцию.
Однако может быть и так, что вы выполняли проверку на возвращение значения true или false и для этого использовали такие операторы, как if (a == a) (true)
или if (a < a) (false)
. Лучше использовать if (true)
или if (false)
, по следующим двум причинам:
Последние операторы проще: всегда лучше написать ровно столько, сколько нужно.
Использование этих операторов позволяет избежать неоднозначности: в версии C# 2.0 введена новая функция — типы значений, допускающие значение NULL, которые являются аналогом значения
null
в T-SQL — языке программирования, используемом в SQL Server. Разработчики, знакомые с T-SQL, могут беспокоиться о влиянии типов значений, допускающих значение NULL, в таких выражениях, какif (a == a)
использование тернарной логики в T-SQL. При использовании значенияtrue
илиfalse
можно устранить возможную неоднозначность.
Приведенный ниже пример кода приводит к возникновению предупреждения CS1718.
// CS1718.cs
using System;
public class Tester
{
public static void Main()
{
int i = 0;
if (i == i) { // CS1718.cs
//if (true) {
i++;
}
}
}
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: