none
从哪里看到CollectionBase里Add()方法是实现代码? RRS feed

  • 问题

  • 为什么我在VS里右键点击查看定义却看不到显示实现IList接口的Add方法?

    连声明都看不见啊?

    2017年12月11日 7:45

全部回复

  • CollectionBase是.NET BCL的类库, Add方法在基类已经实现,子类一般情况下不需要override.

    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2017年12月12日 0:52
  • Hi,

    欢迎在MSDN论坛发帖。

    根据你的描述,我进行了测试,的确如你所说的那样,add 方法在 CollectionBase并没有实现,由于list是接口,根本不会被实现,所以我觉得add 方法是需要我们自己实现的。

    同时我看了MSDN的官方文档,也没有说Add 方法就是 CollectionBase已经实现的方法,根据实际测试,Add 方法是需要我们实现的。

    你用下面的方法,就知道了

    public class Int16Collection : CollectionBase
        {
    
            public Int16 this[int index]
            {
                get
                {
                    return ((Int16)List[index]);
                }
                set
                {
                    List[index] = value;
                }
            }
    
            //public int Add(Int16 value)
            //{
            //    return (List.Add(value));
            //}
    
        }
    
     Int16Collection myI16 = new Int16Collection();
    
                // Add elements to the collection.
                myI16.Add((Int16)1);

    编译器直接说add 方法没有。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年12月12日 6:34
    版主
    • 已建议为答案 Stone Z 2017年12月13日 7:14
    2017年12月12日 8:08
  • 楼主可以试下 resharper 插件,它有个反编译功能,能查看地源码。只需要按F12
    2017年12月13日 2:20