c#bool方法,若布尔值(参数)不变,将调用该方法吗?
我正在学习c#,最近遇到了一个示例练习。我希望这个问题对于任何布尔类型的语言都是一样的。这个练习展示了一个代码错误(故意)的例子。这里是有问题的方法:它很短,所以我发布它没有问题c#bool方法,若布尔值(参数)不变,将调用该方法吗?,c#,asp.net,C#,Asp.net,我正在学习c#,最近遇到了一个示例练习。我希望这个问题对于任何布尔类型的语言都是一样的。这个练习展示了一个代码错误(故意)的例子。这里是有问题的方法:它很短,所以我发布它没有问题 public void CalculateCostOfDecorations(bool fancy) { if (fancy) { CostOfDecorations = (NumberOfPeople * 15.00M) + 50M; } else
public void CalculateCostOfDecorations(bool fancy)
{
if (fancy)
{
CostOfDecorations = (NumberOfPeople * 15.00M) + 50M;
}
else
{
CostOfDecorations = (NumberOfPeople * 7.50M) + 30M;
}
}
这个练习的要点似乎是(如果我错了,请纠正我),如果bool参数“fancy”没有从其初始状态更改(通过按钮或其他方式),那么无论变量“NumberOfPeople”如何更改(在方法内部),方法本身都不会被调用。否则,如果bool参数“fancy”发生更改,则调用该方法
这是正确的吗?我在网上看过,但没有找到合适的例子
多谢各位
也许我可以澄清我的问题。我问“方法是否被调用”时说错了。我指的是方法中的一个语句
假设bool变量“fancy”最初设置为true。然后假设调用了该方法,并且“fancy”没有从true(最初是)更改为true。如果“fancy”没有更改,测试布尔值(fancy)的“if”语句会被输入吗
谢谢
汤姆这个假设很接近,但并不完全正确。我不知道该怎么说,但是
CalculateCostOfDecorations
只有在被调用时才会被调用。馈送fancy
的值的更改不会触发调用此方法;需要一个显式调用、绑定或其他隐式操作来调用CalculateCostOfDecorations
引用fancy
本身不存在,直到调用此方法并开始执行,然后仅在此方法的本地范围内
如果您希望在不调用方法的情况下正确更新CostOfDecorations“always”,并且_fancy也是一个成员字段(示例中未显示),则可以将其设置为只读属性:
private bool _fancy;
// ...
public Decimal CostOfDecorations {
get { return _fancy ? NumberOfPeople * 15.0 + 50.0
: NumberOfPeople * 7.5 + 30.0; }
}
或者,在C#5中:
如果我们使用第一个参数调用
CalculateCostOfDecorations
,我是否正确理解了您的意思=true
(例如CalculateCostOfDecorations(true)
执行将继续输入if语句,否则,如果fancy
参数的值为false,它将进入else
子句。我将冒险说,他们要求您考虑的是变量NumberOfP人们
。根据你的问题,他们的起源不得而知
我猜他们想让你想想变量的作用域是如何定义的,它的作用域是如何分配的(引用或其他),这都会影响计算结果
正如其他人所说,fancy只能在方法被envoke时被赋值。我不是在回答这个问题。你说的方法本身不被调用是什么意思?如果你的代码调用该方法,该方法就会被调用。更改变量会更改变量。调用方法会调用方法。两者没有链接。“这个练习展示了一个错误代码的例子”这个代码怎么了?我觉得很好…这让我很困扰。为什么这个方法“不正确”我觉得错误代码部分是示例练习中没有发布在这里的其他部分。
public Decimal CostOfDecorations => _fancy ? NumberOfPeople * 15.0 + 50.0 : NumberOfPeople * 7.5 + 30.0;