C# 错误。无法分配,因为它是方法组

C# 错误。无法分配,因为它是方法组,c#,methods,calculator,C#,Methods,Calculator,我正在为我的班做专题。这是一个小小的计算器,你输入第一个数字,然后选择+-*或/。不幸的是,有一个错误,我不知道如何修复。有什么想法吗?在答案方法中,您可能想做的是 Static void Main(string[] args) { double x; double y; char symbol; Console.WriteLine("First number: "); x = double.Parse(Co

我正在为我的班做专题。这是一个小小的计算器,你输入第一个数字,然后选择+-*或/。不幸的是,有一个错误,我不知道如何修复。有什么想法吗?

答案
方法中,您可能想做的是

Static void Main(string[] args)
    {
        double x;
        double y;
        char symbol;
        Console.WriteLine("First number: ");
        x = double.Parse(Console.ReadLine());
        Console.WriteLine("Second number: ");
        y = double.Parse(Console.ReadLine());
        Console.WriteLine("+ or - or * or / ?: ");
        symbol = (char)Console.Read();
        Console.Clear();
        Console.WriteLine("First number = {0,0:f} \nSecond number = {1,0:f} \nResult = {2,0:f}", x, y, answer(x, y, symbol));
    }
    static double answer(double a, double b, char simb)
    {

        if (simb == '+')
           answer = a + b;
        else
            if (simb == '-')
               answer = a - b;
            else
                if (simb == '*')
                    answer = a * b;
                else
                    if (simb == '/')
                      answer = a / b;
                    else
                        Console.WriteLine("Error");
如前所述,您正在从函数返回一个值。 不能为方法赋值


然而,在Pascal中,如果我没有弄错的话,如何从函数返回值是一种有效的方法。

answer
方法中,您可能想做的是

Static void Main(string[] args)
    {
        double x;
        double y;
        char symbol;
        Console.WriteLine("First number: ");
        x = double.Parse(Console.ReadLine());
        Console.WriteLine("Second number: ");
        y = double.Parse(Console.ReadLine());
        Console.WriteLine("+ or - or * or / ?: ");
        symbol = (char)Console.Read();
        Console.Clear();
        Console.WriteLine("First number = {0,0:f} \nSecond number = {1,0:f} \nResult = {2,0:f}", x, y, answer(x, y, symbol));
    }
    static double answer(double a, double b, char simb)
    {

        if (simb == '+')
           answer = a + b;
        else
            if (simb == '-')
               answer = a - b;
            else
                if (simb == '*')
                    answer = a * b;
                else
                    if (simb == '/')
                      answer = a / b;
                    else
                        Console.WriteLine("Error");
如前所述,您正在从函数返回一个值。 不能为方法赋值

然而,在Pascal中,如果我没有弄错的话,如何从函数返回值是一种有效的方法。

在C#中,返回值不是通过将其分配给方法名来设置的,而是使用
return
关键字来设置的

可以为返回值创建局部变量。这为该方法提供了一个单一的退出点,在某些情况下更为清晰:

if (simb == '+')
       return a + b;
....
也可以直接返回值。请注意,您将使用
return
立即退出该方法:

static double answer(double a, double b, char simb) {
  double result;
  if (simb == '+') {
    result = a + b;
  } else if (simb == '-') {
    result = a - b;
  } else if (simb == '*') {
    result = a * b;
  } else if (simb == '/') {
    result = a / b;
  } else {
    Console.WriteLine("Error");
    result = 0;
  }
  return result;
}
在C#中,返回值不是通过将其分配给方法名称来设置的,而是使用
return
关键字来设置的

可以为返回值创建局部变量。这为该方法提供了一个单一的退出点,在某些情况下更为清晰:

if (simb == '+')
       return a + b;
....
也可以直接返回值。请注意,您将使用
return
立即退出该方法:

static double answer(double a, double b, char simb) {
  double result;
  if (simb == '+') {
    result = a + b;
  } else if (simb == '-') {
    result = a - b;
  } else if (simb == '*') {
    result = a * b;
  } else if (simb == '/') {
    result = a / b;
  } else {
    Console.WriteLine("Error");
    result = 0;
  }
  return result;
}
在(旧)Basic语言中,通过将函数赋值给函数名,可以从函数返回值。在C#中使用return语句。请注意,return语句立即终止该方法,因此不再需要else用例

static double answer(double a, double b, char simb) {
  if (simb == '+') {
    return a + b;
  }
  if (simb == '-') {
    return a - b;
  }
  if (simb == '*') {
    return a * b;
  }
  if (simb == '/') {
    return a / b;
  }
  Console.WriteLine("Error");
  return 0;
}
但是,我建议使用switch语句,而不是长if链

static double answer(double a, double b, char simb)
{
    if (simb == '+') return a + b;
    if (simb == '-') return a - b;
    if (simb == '*') return a * b;
    if (simb == '/') return a / b;
    Console.WriteLine("Error");
    return 0; // There must be a return statement in non-void methods.
}
在(旧)Basic语言中,通过将函数赋值给函数名,可以从函数返回值。在C#中使用return语句。请注意,return语句立即终止该方法,因此不再需要else用例

static double answer(double a, double b, char simb) {
  if (simb == '+') {
    return a + b;
  }
  if (simb == '-') {
    return a - b;
  }
  if (simb == '*') {
    return a * b;
  }
  if (simb == '/') {
    return a / b;
  }
  Console.WriteLine("Error");
  return 0;
}
但是,我建议使用switch语句,而不是长if链

static double answer(double a, double b, char simb)
{
    if (simb == '+') return a + b;
    if (simb == '-') return a - b;
    if (simb == '*') return a * b;
    if (simb == '/') return a / b;
    Console.WriteLine("Error");
    return 0; // There must be a return statement in non-void methods.
}

嗯,我在书中举了个例子,这就是我为什么这么做的原因。在这里你可以看一看[链接],它不是英文的,但我想你会明白的。@Deividas:注意字母的大小写。链接中有
suma
suma
。。。一个是变量名,第二个是方法名。C#是一种区分大小写的语言谢谢你,伙计,现在我明白了。嗯,我在书中举了一个例子,这就是我为什么这么做的原因。在这里你可以看一看[链接],它不是英文的,但我想你会明白的。@Deividas:注意字母的大小写。链接中有
suma
suma
。。。一个是变量名,第二个是方法名。C#是一种区分大小写的语言谢谢你,伙计,现在我明白了。