【发布时间】:2014-11-20 03:58:02
【问题描述】:
我正在做作业,但我被困在一个属性上,我需要做的就是不接收负值。
我有这个属性的代码。如何设置setter不让用户设置负值?
public decimal Balance
{
get {return balance;}
private set{ if (value >= 0)
{
balance = value;
}else if (value < 0)
{
??????
}
}
}
这是我的 Main() 方法:
static void Main(string[] args)
{
BankAccountClass firstAccount = new BankAccountClass();
int userInputAccountNumber = int.Parse(Console.ReadLine());
firstAccount.addAccountNumber(userInputAccountNumber);
Console.WriteLine(firstAccount.AccountNumber);
}
【问题讨论】:
-
恕我直言,最好只在属性访问器中执行琐碎的任务,非琐碎任务(例如检查空值)更适合在将空值分配给属性之前检查空值的方法。
-
我是用方法做的,但是老师说方法不对。在整个网络上,用户都在说最好使用一种方法。
-
讲师讲授理论,该领域的专业人士讲授实用性/可读性/可维护性/常识...考虑msdn.microsoft.com/en-gb/library/w86s7x04.aspx有一个if语句,但是如果将月份设置为13...没什么...好吧,那是裤子...如果它是 13(或在您的情况下为 null),您总是想做某事,并且属性的特殊方法访问器不是最好的地方。
-
还要考虑当一个属性是非虚拟的并且只包含少量代码时,执行环境可以用访问器的实际代码替换对访问器的调用。此过程称为内联,它使属性访问与字段访问一样高效,同时保留了属性增加的灵活性。
标签: c# oop properties