微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SET如何在C#中使用属性?

我想知道如果set不仅仅设置私有成员变量的值,它在一个属性中是如何工作的.假设我的班级中有一个私人成员(private int myInt).

例如,我可以确保返回的值不是负数

get
{
  if(myInt < 0)
    myInt = 0;
  return myInt;
}

使用SET,我所能做的就是像这样影响私有变量

set { myInt = value; }

我没有在任何一本书中看到我如何能做到更多.如果在影响myInt的值之前我不想做一些操作怎么样?假设:如果值为负,则影响0到myInt.

set
{
  //Check if the value is non-negative,otherwise affect the 0 to myInt
}

谢谢你的帮助

解决方法

你可以做你想做的.

没有什么可以阻止你:

set
{
    if (value < 0)
        myInt = 0;
    else
        myInt = value;
}

(或者更紧凑的版本)

这就是设置者和吸气剂的设计目标.

如果值超出范围,您可以添加日志记录,调试断言甚至引发异常.

您的Setters和Getters的用户不会期望他们进行“大量”处理或有任何副作用.所以他们应该只影响他们的支持变量而不是处理1000个文本文件(作为例子).与数据库的连接很好,但是如果要获得大量数据,则应该使用显式函数替换Get.

另外,请注意@StingyJack在他的回答中所说的内容.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐