尝试在自定义对象中将集合公开为数组

本文关键字:集合 数组 自定义 对象 | 更新日期: 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;