C# 布尔能很容易地转换成符号吗?

C# 布尔能很容易地转换成符号吗?,c#,type-conversion,implicit-conversion,C#,Type Conversion,Implicit Conversion,目前我有以下代码 if(BlackScreenAlpha > 1f){ BlackScreenAlphaIncrease = false; } if(BlackScreenAlphaIncrease == true){ BlackScreenAlpha += 0.01f; }else{ BlackScreenAlpha -= 0.01f; } 它当前将图像的alpha从0更改为1,然后再次更改为0。在我的项目中,我已经遇到过几次这种情况,现在我想知道是否有更有效的

目前我有以下代码

if(BlackScreenAlpha > 1f){
    BlackScreenAlphaIncrease = false;
}
if(BlackScreenAlphaIncrease == true){
    BlackScreenAlpha += 0.01f;
}else{
    BlackScreenAlpha -= 0.01f;
}
它当前将图像的alpha从0更改为1,然后再次更改为0。在我的项目中,我已经遇到过几次这种情况,现在我想知道是否有更有效的方法来做到这一点

有没有更好的方法使BlackScreenAlpha增加布尔值更直接地对应BlackScreenAlpha的变化?即直接将“真”转换为“+”号,同样地,将“假”转换为“-”号

(我不认为while循环是合适的,因为这只是我的代码的一部分,其他东西在每次递增/递减之间运行)

你不能真正有一个“符号”,除非你这样做:

float signMultiplier;
if(BlackScreenAlphaIncrease)
{
    signMultiplier = 1;
}
else
{
    signMultiplier = -1;
}

BlackScreenAlpha += (signMultiplier * 0.01f);
但这是不可读的。用这个来代替呢

BlackScreenAlpha += BlackScreenAlphaIncrease ? 0.01f : -0.01f;
你不可能真正有一个“标志”,除非你这样做:

float signMultiplier;
if(BlackScreenAlphaIncrease)
{
    signMultiplier = 1;
}
else
{
    signMultiplier = -1;
}

BlackScreenAlpha += (signMultiplier * 0.01f);
但这是不可读的。用这个来代替呢

BlackScreenAlpha += BlackScreenAlphaIncrease ? 0.01f : -0.01f;

您也可以将版本1作为一个三元组<代码>如果(…==true)很奇怪,那么您也可以将版本1作为一个三元函数来执行<代码>如果(…==true)无论如何都很奇怪