首页  »   C#

C#字典中结构体中变量修改值得有关问题

网友分享于:2014-10-28  浏览:0次
C#字典中结构体中变量修改值得问题
请教各位大神一个问题,我把遇到的问题代码贴出来,劳烦各位大神瞅一眼。
字典给我的感觉和map是一样的,所以在第一次用的时候我遇到了下面的问题,我直接给里的结构体赋值,但是错了,我就换了个方法赋值,但是感觉这样赋值很麻烦,请各位帮忙看看。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DictionaryDemoQ
{
    class Program
    {
        public struct Data
        {
            public int a;
            public int b;
        }

        static void Main(string[] args)
        {
            Dictionary<int, Data> data = new Dictionary<int, Data>();
            Data d = new Data();
            for (int i = 0; i < 3; i++ )
            {
                d.a = i + 1;
                d.b = i + 2;
                data.Add(i, d);
            }

            for (int i = 0; i < 3; i++ )
            {
                //我以为这里可以和c++中的map一样,可以直接赋值,但是会报错
                //data[i].a = 10;  //这里不能这样直接赋值

         //然后我是这么处理的,但我感觉这么处理很麻烦,不知道还有其它处理方法吗?
         //还是我的应用方法不对?
         //请各位大神指点下
         Data da = new Data();
                da = data[i];
                da.a = 10;
                da.b = 20;
                data[i] = da;
            }
        }
    }
}

------解决思路----------------------
就是你那样写,已经最简单了

可以稍微简化下
Data da = data[i];
da.a = 10;
da.b = 20;
data[i] = da;

或者按照你的写法,将Data定义成class
public class Data
这样就可以了。
------解决思路----------------------
不能那样赋值是因为struct是按值传递的,你这个Data类型应该没必要用struct,用class就好了

相关解决方案

最新解决方案