V3196. Parameter is not utilized inside the method body, but an identifier with a similar name is used inside the same method.
Анализатор обнаружил подозрительный код, в котором один из параметров никак не используется. При этом в теле функции/конструктора используется значение переменной, поля или свойства с похожим названием. Возможно, это значение было по ошибке использовано вместо значения параметра метода.
Рассмотрим пример:
public GridAnswerData(int questionId, ....)
{
this.QuestionId = QuestionId;
....
}
В данном конструкторе свойству присваивается собственное же значение. Очевидно, что это опечатка, и свойству 'this.QuestionId' должно быть присвоено значение параметра 'questionId'. В результате решение проблемы выглядит следующим образом:
public GridAnswerData(int questionId, ....)
{
this.QuestionId = questionId;
....
}
Рассмотрим ещё один пример:
public async void Save(string filePath = null)
{
using(var writer = new StreamWriter(FilePath))
{
....
await writer.WriteAsync(Data);
}
}
В данном случае в метод 'Save' в качества аргумента 'filePath' передаётся путь к файлу, в который должны быть сохранены какие-то данные. Однако вместо этого сохранение выполняется в другой файл, путь к которому возвращает свойство 'FilePath'. Можно предположить, что свойство 'FilePath' должно быть использовано только в случае, если аргумент 'filePath' имеет значение 'null'. В итоге исправленный код может выглядеть следующим образом:
public async void Save(string filePath = null)
{
var path = filePath ?? FilePath;
using(var writer = new StreamWriter(path))
{
....
await writer.WriteAsync(Data);
}
}
Даже если это предположение ошибочно, наличие неиспользуемого параметра в сигнатуре метода может запутать и потенциально привести к ошибкам при использовании этого метода в будущем.