Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#bool方法,若布尔值(参数)不变,将调用该方法吗?_C#_Asp.net - Fatal编程技术网

c#bool方法,若布尔值(参数)不变,将调用该方法吗?

c#bool方法,若布尔值(参数)不变,将调用该方法吗?,c#,asp.net,C#,Asp.net,我正在学习c#,最近遇到了一个示例练习。我希望这个问题对于任何布尔类型的语言都是一样的。这个练习展示了一个代码错误(故意)的例子。这里是有问题的方法:它很短,所以我发布它没有问题 public void CalculateCostOfDecorations(bool fancy) { if (fancy) { CostOfDecorations = (NumberOfPeople * 15.00M) + 50M; } else

我正在学习c#,最近遇到了一个示例练习。我希望这个问题对于任何布尔类型的语言都是一样的。这个练习展示了一个代码错误(故意)的例子。这里是有问题的方法:它很短,所以我发布它没有问题

 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;