尝试在自定义对象中将集合公开为数组
本文关键字:集合 数组 自定义 对象 | 更新日期: 2023-09-27 18:33:02
我目前正在尝试做这样的事情:
json.Properties["ssn"].Value = ...;
这背后的代码如下所示:
public JsonProperty this[String name]
{
get
{
for (int i = 0; i < this.Properties.Count; i++)
{
if (this.Properties[i].Name.Equals(name))
{
return Properties[i];
}
}
throw new ArgumentNullException("No property with that name exists");
}
set
{
for (int i = 0; i < this.Properties.Count; i++)
{
if (this.Properties[i].Name.Equals(name))
{
this.Properties[i].Value = value;
break;
}
}
}
}
智能感知给了我一个错误,尽管在这一行:this.Properties[i].Value = value;
它告诉我以下内容:
Cannot modify the return value of 'System.Collections.Generic.List<...>.this[int]' because it is not a variable.
我不确定如何解决这个问题。有什么建议吗?
你已经回答了你的问题。不能直接修改结构体成员
您需要做的是创建新的 JsonPropetry 并分配给属性列表
Properties[i] = new JsonProperty(name, value);//don't know exact JsonProperty constructor
或
JsonProperty temp = Properties[i];
temp.Value = value;
Properties[i] = temp;
我不知道JsonProperty
类的架构,但似乎您正在尝试输入索引器JsonProperty
的 RHS 形式 Properties[i].Value
(这是JsonProperty.Value
,而不仅仅是JsonProperty
)。
尝试将行更改为:
this.Properties[i] = value;
或者(这对于索引器 IMO 来说是错误的)
this.Properties[i].Value = value.Value;