如何在 Unity C# 中压缩此语句的 if 运算符

How to compact if operator for this statement in Unity C#

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

public bool printInConsole;

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

我想使用 compact 来调用这个 Unity 函数吗?三元运算符。
如何使用 C# 在 Unity 中为此编写语句?

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

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

如果您有几件事要记录,并且只想避免 "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_expression)。
  2. 三元运算符表达式必须 return 一个值,并且 Debug.Log() returns 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");

因为我不是英国人,所以请你改进我的回答。