在C#中压缩多个相似的if语句

Chr*_*ina 0 c# if-statement unity-game-engine

我想为游戏编写一些紧凑的代码。这是原件。

if (killPosX != 0) // float x position you would like the object to be destroyed at
{
    killX = true;  // automatically makes the value of killX true
}

if (killPosY != 0) // float y position you would like the object to be destroyed at
{
    killY = true;  // automatically makes the value of killY true
}

if (killPosT != 0) // float position in time you would like the object to be destroyed at
{
    killT = true;  // automatically makes the value of killT true
}
Run Code Online (Sandbox Code Playgroud)

我想把它变成这样:

if ([killPosX, killPosY, killPosT] != 0)
{
    [killPosX, killPosY, killPosT] = true;
}
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

Hel*_*ium 5

if (killPosX != 0)
{
    killX = true;
}
Run Code Online (Sandbox Code Playgroud)

可以翻译如下

killX = (killPosX != 0) ? true : killX;
Run Code Online (Sandbox Code Playgroud)

或更简单

killX |= killPosX != 0;
Run Code Online (Sandbox Code Playgroud)
if (killPosX != 0)
{
    killX = true;
}
else
{
    killX = false;
}
Run Code Online (Sandbox Code Playgroud)

可以翻译如下

killX = (killPosX != 0) ? true : false;
Run Code Online (Sandbox Code Playgroud)

或更简单

killX = killPosX != 0;
Run Code Online (Sandbox Code Playgroud)

但是由于不建议使用==或比较浮点数!=,因此我将继续:

killX |= !Mathf.Approximately( killPosX, 0 );
killY |= !Mathf.Approximately( killPosY, 0 );
killT |= !Mathf.Approximately( killPosT, 0 );
Run Code Online (Sandbox Code Playgroud)

AFAIK,没有类似于您为实现所需内容而编写的内置语法。