c#为什么我不能在这里使用?

时间:2015-02-19 15:42:51

标签: c#

基本上它告诉我tal2--;否则tal1 = 56;这是一个错误“无效的表达其他”,怎么回事?

干杯。

using System;

class Program
{
    static void Main(string[] args)
    {
        int tal1, tal2;
        int slinga;

            tal2 = Convert.ToInt32(Console.ReadLine());
        for (slinga = 0; slinga < 2; slinga++)
        {
            if (tal1 == 56)
                Console.WriteLine(Addera(slinga, tal1));
            tal2--;
            else tal1 = 56;

        }
    }
    static int Addera(int tal1, int tal2)
    {
        return tal1 + tal2;
    }
}

3 个答案:

答案 0 :(得分:3)

如果“if子句”必须跨越多行代码,则必须用大括号“{}”将其包围。将您的代码更改为:

using System;

class Program
{
    static void Main(string[] args)
    {
        int tal1, tal2;
        int slinga;

        tal2 = Convert.ToInt32(Console.ReadLine());
        for (slinga = 0; slinga < 2; slinga++)
        {
            if (tal1 == 56)
            {
                Console.WriteLine(Addera(slinga, tal1));
                tal2--;
            }
            else
                tal1 = 56;
        }
    }
    static int Addera(int tal1, int tal2)
    {
        return tal1 + tal2;
    }
}

答案 1 :(得分:0)

以下代码行错误

if (tal1 == 56)
      Console.WriteLine(Addera(slinga, tal1));
    tal2--;
 else tal1 = 56;

您需要将其更新为

if (tal1 == 56){
     Console.WriteLine(Addera(slinga, tal1));
     tal2--;
}
 else {
    tal1 = 56;
}

原因:对于多行{ }条件

,您需要if-else

MSDN says

  

then语句和else语句都可以包含一个语句或括在大括号({})中的多个语句。对于单个语句,大括号是可选的,但建议使用。

所以你需要{ },因为它是多线的

答案 2 :(得分:0)

更改

        if (tal1 == 56)
            Console.WriteLine(Addera(slinga, tal1));
            tal2--;
        else tal1 = 56;

        if (tal1 == 56)
        {
            Console.WriteLine(Addera(slinga, tal1));
            tal2--;
        }
        else tal1 = 56;

{}告诉编译器这些括号之间的代码是同一逻辑分支的一部分。