SonarQube:添加一种方法来打破这种方法的递归c#



我们最近开始在我们的项目中使用SonarQube。因此,当我构建这个项目时,它给出了一个严重的错误:"添加一个方法来打破这个方法的递归"。下面是代码

private Bool SetProperty<T>(T storageField, T value, [CallerMemberName] string pName= "" )
{
return SetProperty<T>(storageField, value, pName);
}

你们知道如何解决这个问题,让SonarQube不会抱怨吗?

"添加一种方法来跳出此方法的递归">

就像前面提到的,你需要打破常规,因为它一遍又一遍地调用自己。看起来你正在尝试实现INotifyPropertyChanged接口,假设因为你已经标记了wpf

试着这样改变你的习惯:

protected bool SetProperty<T>(ref T storage, T value, [CallerMemberName] string propName = "")
{
if (EqualityComparer<T>.Default.Equals(storage, value)) return false;
storage = value;
OnPropertyChanged(propName);
return true;
}

在上面的例程中,我检查value是否与storage不同,如果相同,我们不需要再走了,因此我们可以返回false,否则我们可以执行PropertyChanged并返回true

你的方法正在调用自己,你必须打破递归模式。

最新更新