加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 无法修改Dictionary的返回值,因为它不是变量

发布时间:2020-12-15 23:42:44 所属栏目:百科 来源:网络整理
导读:有这样的错误:无法修改’System.Collections.Generic.Dictionary.this [string]’的返回值,因为它不是变量. 我的代码: Dictionarystring,lim urlsLimited = new Dictionarystring,lim();struct lim{ public int min; public int max;}void main (){ .... f
有这样的错误:无法修改’System.Collections.Generic.Dictionary.this [string]’的返回值,因为它不是变量.

我的代码:

Dictionary<string,lim> urlsLimited = new Dictionary<string,lim>();
struct lim
{
    public int min;
    public int max;
}
void main ()
{
    ....
    foreach (KeyValuePair<string,lim> pair in urlsLimited)
    {
        string like = od.LikeDiscussions(pair.Key);
        if (like == "Like")
        {
            lock (locker)
            {
                urlsLimited[pair.Key].min++; // error

            }
        }
    }
    ....
}

如何迭代urlsLimited [pair.Key] .min?

解决方法

您需要将值分配给局部变量,执行增量,然后将其设置回字典.

foreach (KeyValuePair<string,lim> pair in urlsLimited)
{
    string like = od.LikeDiscussions(pair.Key);
    if (like == "Like")
    {
        lock (locker)
        {
            lim val = pair.Value;
            val.min++;
            urlsLimited[pair.Key] = val;
        }
    }
}

有关解释的详细信息,请参阅Jon Skeet对相关问题的回答:https://stackoverflow.com/a/6255368/1149773.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读