1. 程式人生 > >c#字典中傳入結構體和類在賦值時候的區別

c#字典中傳入結構體和類在賦值時候的區別

//我以為這裡可以和c++中的map一樣,可以直接賦值,但是會報錯
//這裡不能這樣直接賦值
//然後我是用方法1中那種方式處理的,但我感覺這麼處理很麻煩
//然後我在csdn論壇上問了下,然後我換成方法2,這種方法可以直接賦值,不再那麼繁瑣
//可以說是各有各的好處吧

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)
        {
            //方法1
            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++ )
            {
                Data da = data[i];
                da.a = 10;
                da.b = 20;
                data[i] = da;
            }


            //方法2
            Dictionary<int, TempD> temp_d = new Dictionary<int, TempD>();
            TempD t_d = new TempD();
            for (int i = 0; i < 3; i++)
            {
                t_d.temp1 = i + 1;
                t_d.temp1 = i + 2;
                temp_d.Add(i, t_d);
            }

            for (int i = 0; i < 3; i++ )
            {
                temp_d[i].temp1 = 20;
            }
        }
    }

    public class TempD
    {
        public int temp1;
        public int temp2;
    }
}