首页 > 解决方案 > 在其他类中计算后在静态 Main 中获得答案

问题描述

我需要在静态 Main 中显示总和,但要在其他类中完成计算。我一直是0。为什么?

namespace ConsoleApp7{

    public class Perimetro_skaiciavimas
    {

        public static void Main()
        {
            {
                var kvadrato_perimetro_skaiciavimas = new kvadrato_perimetro_skaiciavimas();

                Console.WriteLine("Ivesti kvadrato krastiniu ilgius");
                Console.Write("Krastine A: ");
                kvadrato_perimetro_skaiciavimas.a = int.Parse(Console.ReadLine());
                Console.Write("Krastine B: ");
                kvadrato_perimetro_skaiciavimas.b = int.Parse(Console.ReadLine());

                Console.WriteLine(kvadrato_perimetro_skaiciavimas.perimetras); // GIVES ME A 0 how to get SUM?
            }
        }
    }
    public class kvadrato_perimetro_skaiciavimas
    {
        public static int a, b, perimetras;

        public void skaiciavimas() {
            perimetras = a + b;     //PROBLEM AREA
        }
    } }

标签: c#class

解决方案


在您的其他类中,您已将变量定义为静态,这意味着该值是在对象完全构造之前定义的。您的其他类应如下所示:

public class Calculator
{
     public float Sum(params float[] parameters) => result = parameters.Where(parameter => parameter != null).Sum(parameter => parameter);
}

从您的入口点,您可以知道读取所有输入,然后通过Calculator.Sum简单的操作将它们传递给您进行计算new Calculator().Sum(1, 2, 3, 4, 5, 6, 7, 8, 9);。如果您愿意,您可以避免使用 Linq 并手动迭代和求和,但这取决于您。

您当前的代码失败,因为:

  • 不正确地使用静态(分配为零,因为这是默认值并且在构造之前初始化。)
  • TryParse应该可能使用而不是清理用户输入,Parse因为如果失败它将引发异常。
  • 您也不会调用 sum 方法。

推荐阅读