日期:2014-05-18  浏览次数:21466 次

C# list链表各个元素如何设置索引器?
现在有一个list<object>myList1,它有5000个数据,想通过索引器设置其中每个元素
如何设置?
另外有一个list<object>myList2,它是由list1 copy来的,想通过索引器设置get来判断mylist1中的每个元素是否发生变换,
如果发生变化,如用户更改mylist1中任何一个元素值后,能通过get属性提示或者得到某个元素值发生变化。请问这个索引器如何设置??谢谢!

------解决方案--------------------
你说的那个数据结构叫做数组,List是一个链表。
请选择合适的数据结构来做操作。
------解决方案--------------------
探讨

链表就不行吗?
为链表的每一个元素设置set和get怎么设置?

------解决方案--------------------
通过索引器设置,直接 myList1[0]
后面那个问题,可能需要你自己封装一个类,里面包含一个list,然后设置索引器属性,访问的都是内部list的item,set方法时提示
------解决方案--------------------
通过索引器设置,直接 myList1[0]
后面那个问题,可能需要你自己封装一个类,里面包含一个list,然后设置索引器属性,访问的都是内部list的item,set方法时提示
------解决方案--------------------
首先List<T>就可以用索引访问
其次 这个泛型类 可以设置是否修改的属性来判断
------解决方案--------------------
有一个扩展方法ElementAt可以满足你的需求,注意它在System.linq命名空间里
------解决方案--------------------
有人喜欢原封不动的复制他人回复,例如7楼,BS这样的人。

楼主你的问题真的是没有表述清楚,我只看到你的myList1在使用,myList2复制出来后,未曾用到,那你提到它干嘛的?而你又提到Get操作,这个本身就很奇怪,显然应该是Set操作才对,Set时进行对比,发生变化记录。最后要说的是,不是自己定义的类型,如何定义Get、Set操作?显然应该自定义一个继承IList<T>接口的类来实现自定义的Get、Set操作才行。
------解决方案--------------------
元素变化,和索引器无关,你应该定义事件

索引器顾名思义是用来检索数据的。

你的表述有点逻辑不清,很多基础概念都有混淆。反正我不是很理解
------解决方案--------------------
你在给集合赋值的时候 在多加一列不就行啦!
------解决方案--------------------
那我给一个最简单的,直接继承List<T>,可以少写很多代码。
C# code

    public class MyList<T> : List<T> where T : struct
    {
        public new T this[int index]
        {
            get
            {
                return base[index];
            }
            set
            {
                //这里限定了T为结构体,所以不会出现为空的情况,可以免除为空判断
                if (!base[index].Equals(value))
                {
                    MessageBox.Show("数值不相等,已发生变化");
                    base[index] = value;
                }
            }
        }
    }

------解决方案--------------------
public T this[int index]
貌似LZ只是对这个语法不清楚