请教C#属性问题!如何判断属性赋值失败??急!

intersun 2006-06-13 12:39:54
请问大家,C#中定义属性时,在set中可以判断外界赋予的值是否符合一定的规则,如不符合的话,如何让外部程序得知呢?如下例:

public int a
{
get
{
return _a;
}
set
{
if (value < 0 || value > 100)
{
Console.WriteLine("不符合规则!");
return;
}
else
{
a = value;
//return 0;
}
}
}
我现在想在外部循环中赋予属性a值,只要赋的值小于0或者大于100,就要求再次重赋值,符合规则后则退出循环,请问如何实现?
...全文
365 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
aSalt 2006-06-14
  • 打赏
  • 举报
回复
amandag 2006-06-14
  • 打赏
  • 举报
回复
//你肯定是循环的时候出现了问题,可以贴贴代码看看

//原来的代码没有错误了

using System;

class Test
{
private int _a;
public int a
{
get
{
return _a;
}
set
{
if (value < 0 || value > 100)
{
try
{
throw new ArgumentException("不符合规则!");
}
catch(ArgumentException ae)
{
Console.WriteLine(ae.Message);
}
}
else
{
_a = value;
}
}
}

public static void Main(String[] args)
{
Test obj = new Test();
obj.a = 900;
Console.WriteLine(obj.a.ToString());
}
}
intersun 2006-06-14
  • 打赏
  • 举报
回复
Reeezak(坚持信念)兄,为什么我按照你说得写了以后,在设置正确的值时,却抛出了一个StackOverFlowException呢?就是上面那段代码。
intersun 2006-06-13
  • 打赏
  • 举报
回复
Reeezak(坚持信念)兄能否给一段代码?多谢!
Reeezak 2006-06-13
  • 打赏
  • 举报
回复
这样的情况一般采用throw new xxxException的方式
liujiwe79 2006-06-13
  • 打赏
  • 举报
回复
属性的设置一般用throw new ArgumentException("不符合规则!")异常处理
intersun 2006-06-13
  • 打赏
  • 举报
回复
Reeezak(坚持信念)兄,我写的就是_a,表示类内部的私有变量。
多谢!
zhgroup 2006-06-13
  • 打赏
  • 举报
回复
如果设置的值不对,可以抛出异常,也可以将其值自动设置为默认值。
Reeezak 2006-06-13
  • 打赏
  • 举报
回复
不过,我觉得你好像写错了

a = value;
应该是
_a = value;
是吗?
Reeezak 2006-06-13
  • 打赏
  • 举报
回复
public int a
{
get
{
return _a;
}
set
{
if (value < 0 || value > 100)
{
//Console.WriteLine("不符合规则!");
//return;
throw new ArgumentException("不符合规则!");
}
else
{
a = value;
//return 0;
}
}
}

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧