为什么我们不能在if语句中编写Console.Writeline()?

时间:2015-02-05 10:07:33

标签: c# c

为什么我们不能在C# if 条件下写 Console.Writeline()?但我们可以写 {strong 1中的如果条件中的 printf()语句?

3 个答案:

答案 0 :(得分:15)

在C中,printf的返回类型为int - 写入的字符数。

同样在C中,if条件基本上可以是任何非空数据类型。

将其与C#和.NET进行比较,其中Console.WriteLine的返回类型为void,而if语句中的条件必须具有类型bool的({或隐式转换为bool)。 (因此即使Console.WriteLine返回int,您仍需要if (Console.WriteLine(...) != 0)之类的内容才能使其有效。)

您希望条件实际检查什么?如果Console.WriteLine由于某种原因失败,那么无论如何都会抛出异常......

答案 1 :(得分:-1)

只是为了好玩,你可以使用帮助类:

public static class True
{
    public static bool Invoke(Action action)
    {
        action();
        return true;
    }
}

您可以在Console.WriteLine声明中使用if

if (myConditions && True.Invoke(() => Console.WriteLine(@"myConditions is true")))
{
    // do smth
}

答案 2 :(得分:-1)

可以肯定地说 C# C 语言演变的结果。在C#中,重点是使代码更具逻辑性和可读性。 C对于汇编程序更合乎逻辑,只有硬件理解的语言。在 C#中的 IF 语句中进行非布尔操作没有意义。