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)无论如何都很奇怪