string _frontImgPath = string.Empty;
public string FrontImagePath
{
get
{
return _frontImgPath;
}
set
{
if (!String.IsNullOrEmpty(OriginalImgPath) && !String.IsNullOrEmpty(HostUrl))
_frontImgPath = HostUrl + OriginalImgPath;
}
}
我们有C#属性" OriginalImgPath"和#34; HostUrl"在同一个班。我在sonarqube中收到以下警告"使用'值'此属性中的参数设置访问者声明"。
我们为什么要使用' value'这里吗?
答案 0 :(得分:1)
因为如果有人打电话:
FrontImagePath = "lalala"
传递给set
方法的值根本不会被使用。
如果是这种情况,我认为用正确的名称编写独立的方法会更好。
答案 1 :(得分:1)
当你在属性中调用set
时,实际上是在调用set_FrontImagePath(string value)
方法,它有参数 - string value
。在您的情况下,您尝试在没有任何参数的情况下调用该方法,这会导致Use the 'value' parameter in this property set accessor declaration"
错误。
您可以在使用部分执行以下操作:
string _frontImgPath = string.Empty;
public string FrontImagePath
{
get{
return _frontImgPath;
}
set{
_frontImgPath = value;
}
}
void SomeMethod()
{
. . .
OriginalImgPath = "x:\\someimage.img";
. . .
HostUrl = "yourHostUrl";
. . .
if (!String.IsNullOrEmpty(OriginalImgPath) && !String.IsNullOrEmpty(HostUrl))
FrontImagePath = HostUrl + OriginalImgPath;
. . .
}
答案 2 :(得分:0)
set访问器类似于返回类型为void
的方法。它使用名为value
的隐式参数,其类型是属性的类型。在以下示例中,set
属性中添加了Name
访问者:
class Person
{
private string name; // the name field
public string Name // the Name property
{
get { return name; }
set { name = value; }
}
}
为属性赋值时,将使用提供新值的参数调用set访问器。例如:
Person person = new Person();
person.Name = "Joe"; // the set accessor is invoked here
System.Console.Write(person.Name); // the get accessor is invoked here
对于set访问器中的局部变量声明,使用隐式参数名称value是错误的。
或者 get访问器可用于返回字段值或计算它并返回它。例如:
class Employee
{
private string name;
public string Name
{
get
{
return name != null ? name : "NA";
}
}
}