C# 操作类型为列表的属性

C# 操作类型为列表的属性,c#,list,properties,C#,List,Properties,我有一个列表类型的属性,如下所示 private List<ListCOP_PAYLOAD> m_COP_DATA = new List<ListCOP_PAYLOAD>(); public List<ListCOP_PAYLOAD> COP_DATA { get { return m_COP_DATA; } set { m_COP_DATA = value; FireN

我有一个列表类型的属性,如下所示

private List<ListCOP_PAYLOAD> m_COP_DATA = new List<ListCOP_PAYLOAD>();
public List<ListCOP_PAYLOAD> COP_DATA
{
    get
    {
        return m_COP_DATA;
    }
    set
    { 
        m_COP_DATA = value;
        FireNewSMode_Data();
    }
}
但它只是增加了新数据变量的列表大小

我想清除以前的数据,所以我使用了

m_exchangedata.COP_DATA.Clear();
编辑: 我是按这个顺序用的

 m_exchangedata.COP_DATA.Clear();
 m_exchangedata.COP_DATA = Mstruct.lMCOPStruct;
但这似乎不起作用

我得到InvalidOperationException:序列不包含元素

如果事件处理程序不为null,FireNewSMode_数据只会触发一个带有该数据的事件

任何帮助都将不胜感激


提前感谢。

在清除COP_数据之前设置计数条件。列表:

if(m_exchangedata.COP_DATA.Count > 0)
{
    m_exchangedata.COP_DATA.Clear();
}
m_exchangedata.COP_DATA = Mstruct.lMCOPStruct;

你能提供
FireNewSMode\u数据
方法吗?
似乎不起作用
->这没有多大意义。很好的注释,我在代码前面使用了它。我的问题是m_exchangedata和Mstruct都是引用类型,所以当我清除COP_数据时,我也清除了lMCOPStruct。我早该注意到的。
if(m_exchangedata.COP_DATA.Count > 0)
{
    m_exchangedata.COP_DATA.Clear();
}
m_exchangedata.COP_DATA = Mstruct.lMCOPStruct;