如何在Unity C#中为该语句压缩if运算符

本文关键字:语句 压缩 if 运算符 Unity | 更新日期: 2023-09-27 18:01:14

在"Unity"中,我们经常调试到控制台。

public bool printInConsole;
void Start()
{
    if ( printInConsole ) Debug.Log("Starting and printing...");
}

我想用compact调用这个Unity函数?三元运算符
如何在Unity中使用C#为此编写声明?

如何在Unity C#中为该语句压缩if运算符

在您的情况下,因为您只想在条件满足时打印,所以您可以使用if块,不需要使用三元运算符。

if ( printInConsole ) 
   Debug.Log("Starting and printing..."); 

如果你有几件事要记录,而你只是想避免"If/log"循环,你可以创建一个方法:

private void LogIt(string msg)
{
    if (printInConsole)
        Debug.Log(msg);
}

然后,每当您想记录一些内容时,只需致电LogIt()即可。

TLDR使用if:

if ( printInConsole ) Debug.Log("Starting and printing..."); 

C#中三元表达式的语法如下:

condition ? first_expression : second_expression;

在您的场景中,不能使用三元运算符,因为:

  1. 它需要两个表达式:一个用于conditiontrue(first_expression(的情况,另一个用于false(second_express(的情况
  2. 三元运算符表达式必须返回一个值,而Debug.Log()返回void

您可以发明一些疯狂的方法来将逻辑拟合到三元运算符中,比如将Debug.log()调用封装在Action委托中,但这将是浪费,因为三元运算符的全部目的是使代码更简单。。。

不,没有办法使if语句比更紧凑

if ( printInConsole ) Debug.Log("Starting and printing...");

正如">Rahul"所指出的,一种更好的视觉方式是:

if ( printInConsole ) 
   Debug.Log( "Starting and printing..." );

正如">Genos"所提到的,使用C#紧凑三元运算符是不正确的,例如:

printInConsole ? Debug.Log("Starting and printing...");

因为它需要第二个else表达式。

可以在函数内部执行,但结果并不更紧凑、简单或可读

Debug.Log(printInConsole ? "Running and printing..." : "'n");

">itsme86",我的传统解决方案是创建一个特定的紧凑函数方法。通过这种方式,调用函数更加紧凑。

Mss("Starting and printing..." );

在我的情况下,完整的Unity代码示例将是:

public bool printInConsole;
void Start()
{
    Mss("Starting and printing..." );
}
private void Mss(string consoleMessage)
{
    if (printInConsole)
        Debug.Log(consoleMessage + "'n");
}

另一种解决方案是为键盘按钮分配一个要打印的自定义宏:

if ( printInConsole ) 
   Debug.Log( "" + "'n");

既然我不是英国人,请你改进我的答案

if(printInConsole)?Debug.Log("Starting and printing..."): _you_else_condition_