C# Tips:关于类的集合属性的编程小技巧
2013-08-16 17:17
295 查看
本文是关于一些很不起眼的编程小技巧的。
一、
以前,我代码里会这样写:
等效于:
于是每次调用这个DataGroups属性的时候都要判断它是否为空:
真是烦不胜烦。
二、
于是,后来我这样来定义这个DataGroups属性:
这样我就不用担心DataGroups属性为空了:
可是,我给这个属性赋值的时候遇到了一点小麻烦。
以前,我可以这么干:
现在,我只能这么干:
三、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属性的时候我从来不用担心它为空;第二,赋值的时候又可以像以前一样直接赋值。
很无聊的小技巧吧。
一、
以前,我代码里会这样写:
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属性的时候我从来不用担心它为空;第二,赋值的时候又可以像以前一样直接赋值。
很无聊的小技巧吧。
相关文章推荐
- 如何:声明和使用读/写属性(C# 编程指南)
- 小技巧:用C#编程合并多个WORD文档
- 关于C#编程中引用与值类型赋值的一些容易犯错的地方
- 深入.NET平台和C#编程_使用集合组织相关数据
- C#集合篇,在业务背景下(***产品升级管理):依赖注入,变量声明,三元表达式,常用字符串相关操作方法,ADO.NET,EF机制,T4模板自动生成实体类,ref变量巧用,属性实际运用,唯一性验证
- C#网络编程之TcpListener与TcpClient类常用方法与属性(7)
- C#中一道关于多线程的编程题
- 关于c#中集合的疑问与部分想法(一)(欢迎拍砖和建议)
- 关于数列1,1,2,3,5,8,13,21,34..用C#语言编程求第n项为?
- C#编程思路4--关于项目架构
- 关于C#集合想法与疑问(二)---自定义集合 C#二叉树实现
- C#编程(五十八)----------并行集合
- 几个编程小技巧 关于 Delphi7_Lite_Full_Edition_Setup_7.3.4.3_Build_20110801
- VS 2008 + .NET 3.5 - C# 3.0新特性之Automatic Properties(自动属性)、Object Initializers(对象初始化器)、Collection Initializers(集合初始化器)和Extension Methods(扩展方法)
- 编写高质量代码改善C#程序的157个建议——建议25:谨慎集合属性的可写操作
- 步步为营VS 2008 + .NET 3.5(3) - C# 3.0新特性之Automatic Properties(自动属性)、Object Initializers(对象初始化器)、Collection Initializers(集合初始化器)和Ext
- 几个C#编程的小技巧
- object-c编程tips-给类对象添加属性
- c#当控件被数据绑定时,无法以编程方式向 DataGridView 的行集合中添加行
- 关于编程的一点体会(Tips,持续更新中)