Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.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# 在调用另一个函数时触发函数_C# - Fatal编程技术网

C# 在调用另一个函数时触发函数

C# 在调用另一个函数时触发函数,c#,C#,问题: 在这种情况下,我希望每次运行ScoreSecondBall(…)或ScoreFirstBall(…)时调用PinsTotal+=pinsKnockedDown。所以我想把它放在一个函数中(将来可能会扩展到很多行) 这样做有效吗?因为当函数被调用时,我们有一个线程来监听 感谢您阅读我的问题,如果不清楚,请发表评论,我会解决它:)根据我对您问题的理解,是的,您可以将代码PinsTotal+=pinsKnockedDown放在它自己的方法中。这是调用多个地方通用的代码或逻辑时的常见做法。它还允

问题:

  • 在这种情况下,我希望每次运行
    ScoreSecondBall(…)
    ScoreFirstBall(…)
    时调用
    PinsTotal+=pinsKnockedDown
    。所以我想把它放在一个函数中(将来可能会扩展到很多行)

  • 这样做有效吗?因为当函数被调用时,我们有一个线程来监听


  • 感谢您阅读我的问题,如果不清楚,请发表评论,我会解决它:)

    根据我对您问题的理解,是的,您可以将代码
    PinsTotal+=pinsKnockedDown
    放在它自己的方法中。这是调用多个地方通用的代码或逻辑时的常见做法。它还允许在逻辑发生更改时更容易维护逻辑,因为调用它的代码将保持不变(假设更改是在方法内部进行的)。

    您可以重构该代码,以便只使用一个带有附加参数的
    ScoreBall()
    函数:

    public void ScoreFirstBall(int pinsKnockedDown) {
      if (IsStrike(Frame, pinsKnockedDown)) {
        Score = "X";
        ScoreMessage = "Good Job";
      } else if (IsGutterBall(pinsKnockedDown)) {
        Score = "0";
        ScoreMessage = "You'll do better next time";
      }
      PinsTotal += pinsKnockedDown;
    }
    
    public void ScoreSecondBall(int pinsKnockedDown) {
      PinsTotal += pinsKnockedDown;
    }
    
    然后直接调用它,或者,如果要保留现有函数,请将它们委托给公共实现:

    public void ScoreBall(int pinsKnockedDown, bool first)
    {
        if (first) {
            if (IsStrike(Frame, pinsKnockedDown)) {
                Score = "X";
                ScoreMessage = "Good Job";
            } else if (IsGutterBall(pinsKnockedDown)) {
                Score = "0";
                ScoreMessage = "You'll do better next time";
            }
        }
        PinsTotal += pinsKnockedDown;
    }
    
    这样,您就不必担心将
    PinsTotal
    的增量放在它自己的函数中


    至于效率,函数调用确实有成本,但与代码中可能存在的其他瓶颈相比,成本通常可以忽略不计。

    您的第二个问题是什么意思?谢谢,您的回答直接回答了我的问题:)
    public void ScoreFirstBall(int pinsKnockedDown)
    {
        ScoreBall(pinsKnockedDown, true);
    }
    
    public void ScoreSecondBall(int pinsKnockedDown)
    {
        ScoreBall(pinsKnockedDown, false);
    }