设计Property时常犯的一个错误(set)
2004-12-04 17:25
288 查看
属性:在.NET Framework中的CLS支持两种不同的属性(呵呵,看到这里不要以为就是只读get和只写set属性),分别是标量属性和矢量属性。什么意思呢?
标量属性表示单个类的特性,这个属性可以使一个基本值,如int,DateTim,Color,在C#语法中,标量属性不能参数化(Visual Basic .NET除外)。
矢量属性就是我们通常所说的索引器,它表示一个结构,他允许在类上使用像数组那样的语法。
对于他们具体的用法,MSDN有更加详细的说明,我这里只谈谈设计标量属性时,常犯的一个错误 private int nAge;
public MyProperty()
}
public int Age
get set
// 如果输入的年龄小于0,就让他等于0
if(nAge <=0)
nAge = 0;
}
else
nAge = value;
}
}
}
}
你觉得上边的代码有问题吗?
可以用如下的代码测试一下啊
MyProperty aMyProperty = new MyProperty();
aMyProperty.Age = 20; // 或者其他的-100
MessageBox.Show(aMyProperty.Age.ToString()); // 这里总是 0 。
呵呵,上述的代码有一个非常隐蔽的错误。
改正后的代码如下:
set
{
if(value <= 0) //没错,就是这里!
{
nAge = 0;
}
else
{
nAge = value;
}
}
就这样就可以了
![](http://www.cnblogs.com/Emoticons/hitwall.gif)
,另外还可以设计静态属性,或者虚属性!
标量属性表示单个类的特性,这个属性可以使一个基本值,如int,DateTim,Color,在C#语法中,标量属性不能参数化(Visual Basic .NET除外)。
矢量属性就是我们通常所说的索引器,它表示一个结构,他允许在类上使用像数组那样的语法。
对于他们具体的用法,MSDN有更加详细的说明,我这里只谈谈设计标量属性时,常犯的一个错误 private int nAge;
public MyProperty()
}
public int Age
get set
// 如果输入的年龄小于0,就让他等于0
if(nAge <=0)
nAge = 0;
}
else
nAge = value;
}
}
}
}
你觉得上边的代码有问题吗?
可以用如下的代码测试一下啊
MyProperty aMyProperty = new MyProperty();
aMyProperty.Age = 20; // 或者其他的-100
MessageBox.Show(aMyProperty.Age.ToString()); // 这里总是 0 。
呵呵,上述的代码有一个非常隐蔽的错误。
改正后的代码如下:
set
{
if(value <= 0) //没错,就是这里!
{
nAge = 0;
}
else
{
nAge = value;
}
}
就这样就可以了
![](http://www.cnblogs.com/Emoticons/hitwall.gif)
,另外还可以设计静态属性,或者虚属性!
相关文章推荐
- Xmanager 1.3.9远程登录linux
- Java开发者必去的20个英文技术网站
- 比较酷的网站
- Linux系统下 封杀非法IP
- 试用了一下微软的Wallop,对RIA(富媒体)的一些想法
- 用Linux防火墙构建DMZ
- 探究客户端浏览器分辨率的自适应问题(如何使网站脚本自动适应客户端分辨率)(2)
- 探究客户端浏览器分辨率的自适应问题(如何使网站脚本自动适应客户端分辨率)(1)
- Window 2K 上 IIS 5 + Tomcat-4.1.27 + JK-2.0.4 的整合
- 提问的智慧
- 有关jsp+struts+hibernate+MSSQLServer项目中Tomcat5的server.xml配置
- 我第一次在Eclipse中调用Tomcat控制台输出
- よく使われる Linux Command - rpm & mount
- Linux下以太网桥防火墙的配置
- 【NEWS】Lancaster University leads European software project.
- 微软Windows XP SE泰国首卖 欲借此打盗版
- 微软重量级blog,Wallop,你用了吗?
- 何时该实用属性Property,何时用Proected——类间继承
- 如何实现无刷新的DropdownList联动效果 (转贴)
- 同时使用apache和IIS的一个解决方案[转载]