c# - 在其他类中计算后在静态 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
}
} }
解决方案
在您的其他类中,您已将变量定义为静态,这意味着该值是在对象完全构造之前定义的。您的其他类应如下所示:
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 方法。
推荐阅读
- node.js - 关于 koa2 中的 async/await
- angular - 使用异步和等待的同步 http 请求 - 角度 5
- r - Caret 使用插入符号训练对象返回的预测与提取的最终模型不同
- mongodb - 如何在mongodb的子文档中$ concat两个字段
- python - Numpy协方差命令返回比输入更多维度的矩阵
- php - 从下一页的路由访问数据.Laravel
- mouseevent - 如何在输入后发送加法序列而不干扰其他组合?
- python - 根据python中的频率和位置排序
- python - 在 python 中实现神经网络
- flutter - 使用 Isolate 处理大量任务