C# 在其他课程的计算后,在静态Main中获得答案
我需要在静态Main中显示sum,但要在其他类中进行计算。我一直得0分。为什么?C# 在其他课程的计算后,在静态Main中获得答案,c#,class,C#,Class,我需要在静态Main中显示sum,但要在其他类中进行计算。我一直得0分。为什么? namespace ConsoleApp7{ public class Perimetro_skaiciavimas { public static void Main() { { var kvadrato_perimetro_skaiciavimas = new kvadrato_perimetro_ska
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
}
} }
在另一个类中,您已经将变量定义为static,这意味着该值是在对象完全构造之前定义的。您的其他类应如下所示:
public class Calculator
{
public float Sum(params float[] parameters) => result = parameters.Where(parameter => parameter != null).Sum(parameter => parameter);
}
从您的入口点,您可以知道读取所有输入,然后将它们传递到计算器.Sum
以通过执行new Calculator().Sum(1,2,3,4,5,6,7,8,9)为您计算代码>例如。如果愿意,您可以避免Linq并手动迭代和求和,但这取决于您自己
您当前的代码失败,因为:
- 不正确地使用static(分配了零,因为这是默认值,并且在构造之前初始化)
- 应该使用
TryParse
而不是Parse
来清理用户输入,因为如果失败,它将抛出异常
- 您也不调用sum方法
下面是您修改的代码。问题是您没有调用方法skaiciavimas()
您的类命名约定不符合C#标准。另外,如果您的方法名称更像动词(CalculatePerimtras)等,那就太好了
解析用户输入可以像TryParse或try-catch一样完成,也建议使用异常。最后,使用这样的变量完全违反了OOP原则
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());
kvadrato_perimetro_skaiciavimas.skaiciavimas();
Console.WriteLine(kvadrato_perimetro_skaiciavimas.perimetras);
}
}
}
public class kvadrato_perimetro_skaiciavimas
{
public static int a, b, perimetras;
public void skaiciavimas() {
perimetras = a + b; //PROBLEM AREA
}
}
}
从公共静态int a、b、周长中删除静态
代码>kvadrato\u perimetro\u skaiciavimas的字段修改实例名称与类名不一样我也不会有静态字段。谢谢。一个明显的例子帮了大忙:)