日期:2014-05-17  浏览次数:20710 次

C# 初学者值类型,引用类型的问题,求大家帮助一下
private void Form1_Load(object sender, EventArgs e)
        {
            List<string> li = new List<string>();
            li.Add("方法");
            li.Add("小明");
            li.Remove("小明");

            List<xx> li2 = new List<xx>();
            xx xx = new xx() { A ="1" };
            xx xx1 = new xx() { A = "3"};
            li2.Add(xx);
            li2.Add(xx1);

            xx xx3 = new xx() { A = "1"};
            li2.Remove(xx3);
        }

        public class xx
        {
            public string A;
        }

代码如上图第一个 li.Remove("小明");可以删除掉
 li2.Remove(xx3); 删除不掉

List<String> li2 = new List<String>();

            String ss =  new String(new char[]{'A'});
            String ss1 = new String(new char[] { 'B' });
            li2.Add(ss);
            li2.Add(ss1);
            String ss33 = new String(new char[] { 'A' });
            li2.Remove(ss33);


同样li2.Remove(ss33);也可以删除掉

网上查到 string和自定义类都是引用类型,为什么在list泛型中效果不一样,新手求解答谢谢

------解决方案--------------------
话说你 xx xx = new xx() { A ="1" };
            xx xx1 = new xx() { A = "3"};
            li2.Add(xx);
            li2.Add(xx1);
 
            xx xx3 = new xx() { A