为什么我们不能在C#
的 if 条件下写 Console.Writeline()?但我们可以写
{strong 1中的如果条件中的 printf()语句?
答案 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 语句中进行非布尔操作没有意义。