您的位置:首页 > 编程语言 > C#

C# Tips:关于类的集合属性的编程小技巧

2013-08-16 17:17 295 查看
本文是关于一些很不起眼的编程小技巧的。

一、

以前,我代码里会这样写:

public List<IMessageDataGroup> DataGroups { get; set; }


等效于:

private List<IMessageDataGroup> _dataGroups = null;

public List<IMessageDataGroup> DataGroups
{
get { return this._dataGroups; }
set { this._dataGroups = value; }
}


于是每次调用这个DataGroups属性的时候都要判断它是否为空:

if (messageCustomizeMode.DataGroups == null ||
messageCustomizeMode.DataGroups.Count == 0)
{
// TODO
}
else
{
// TODO
}


真是烦不胜烦。

二、

于是,后来我这样来定义这个DataGroups属性:

private List<IMessageDataGroup> _dataGroups = null;

public List<IMessageDataGroup> DataGroups
{
get
{
if (this._dataGroups == null)
{
this._dataGroups = new List<IMessageDataGroup>();
}

return this._dataGroups;
}
}


这样我就不用担心DataGroups属性为空了:

if (messageCustomizeMode.DataGroups.Count == 0)
{
// TODO
}
else
{
// TODO
}


可是,我给这个属性赋值的时候遇到了一点小麻烦。

以前,我可以这么干:

messageCustomizeMode.DataGroups = currentDataGroups;


现在,我只能这么干:

messageCustomizeMode.DataGroups.Clear();
foreach (IMessageDataGroup item in currentDataGroups)
{
messageCustomizeMode.DataGroups.Add(item);
}


三、Final solution

最后,我决定这样定义这个DataGroups属性:

private List<IMessageDataGroup> _dataGroups = null;

public List<IMessageDataGroup> DataGroups
{
get
{
if (this._dataGroups == null)
{
this._dataGroups = new List<IMessageDataGroup>();
}

return this._dataGroups;
}

set
{
if (value != this._dataGroups)
{
if (this._dataGroups != null)
{
this._dataGroups.Clear();
}

this._dataGroups = value;
}
}
}

这样,第一,以后引用到DataGroups属性的时候我从来不用担心它为空;第二,赋值的时候又可以像以前一样直接赋值。

很无聊的小技巧吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐