为什么我们不能在 C#
的 if 条件语句中写 Console.Writeline() ,但却可以在 C
中写 printf() 语句?
printf
函数在C语言中的返回类型是int
,表示写入的字符数量。
而在C语言中,if
语句的条件可以是任何非void数据类型。
与此不同,C#和.NET中的Console.WriteLine
函数的返回类型是void
,if
语句中的条件必须是bool
类型(或者可以隐式转换为bool
类型)。因此,即使Console.WriteLine
返回int
类型,你仍然需要类似于if (Console.WriteLine(...) != 0)
这样的代码才能使其有效。
你真正想检查的条件是什么?如果Console.WriteLine
由于某些原因失败,它将抛出异常...
仅供娱乐,您可以使用辅助类:
public static class True
{
public static bool Invoke(Action action)
{
action();
return true;
}
}
你可以在 if
语句中使用 Console.WriteLine
:
if (myConditions && True.Invoke(() => Console.WriteLine(@"myConditions is true")))
{
// do smth
}
printf
返回一个可测试的值,而WriteLine
不会。 - Some programmer dude