SonarQube:添加一种方法来突破此方法递归 C#
SonarQube: Add a way to break out of this methods recursion C#
我们最近开始在我们的项目中使用 SonarQube。因此,当我构建项目时,它给出了一个严重错误:“添加一种方法来打破此方法的递归”。这是代码
private Bool SetProperty<T>(T storageField, T value, [CallerMemberName] string pName= "" )
{
return SetProperty<T>(storageField, value, pName);
}
你们知道如何以 SonarQube 不会抱怨的方式解决这个问题吗?
您的方法正在调用自身,您必须打破递归模式。
"Add a way to break out of this method's recursion"
如前所述,您需要打破常规,它会一遍又一遍地调用自己。看来你正在尝试实现 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
不同,如果相同,我们不需要再进一步,因此我们可以 return false
,否则我们可以做我们的 PropertyChanged
和 return true
.
我们最近开始在我们的项目中使用 SonarQube。因此,当我构建项目时,它给出了一个严重错误:“添加一种方法来打破此方法的递归”。这是代码
private Bool SetProperty<T>(T storageField, T value, [CallerMemberName] string pName= "" )
{
return SetProperty<T>(storageField, value, pName);
}
你们知道如何以 SonarQube 不会抱怨的方式解决这个问题吗?
您的方法正在调用自身,您必须打破递归模式。
"Add a way to break out of this method's recursion"
如前所述,您需要打破常规,它会一遍又一遍地调用自己。看来你正在尝试实现 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
不同,如果相同,我们不需要再进一步,因此我们可以 return false
,否则我们可以做我们的 PropertyChanged
和 return true
.