有没有办法使用三元运算符 - 或类似的方法 - 来选择要分配的变量?

2023-12-19

是否可以根据条件改变我分配给的变量?我遇到的问题是想要这样做:

(bEquipAsSecondary ? currentWeaponOffhand : currentWeaponMainhand) = weaponToSwitchTo;

代替

if (bEquipAsSecondary)
{
    currentWeaponOffhand = weaponToSwitchTo;
}
else
{
    currentWeaponMainhand = weaponToSwitchTo;
}

这会导致以下错误

错误 CS0131 赋值的左侧必须是变量、属性或索引器

所以我想知道是否有办法做到这一点,以减少使用的空间,并且 - 在我看来 - 让它看起来更整洁一些?


要使用三元运算符来选择要为其赋值的变量,您可以使用参考本地/返回 https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/ref-returns。例如,

(bEquipAsSecondary ? ref currentWeaponOffhand : ref currentWeaponMainhand) = weaponToSwitchTo;

示例输出和代码

var currentWeaponOffhand = 4;
var currentWeaponMainhand = 5;
var weaponToSwitchTo = 7;

(bEquipAsSecondary ? ref currentWeaponOffhand : ref currentWeaponMainhand) = weaponToSwitchTo;
Console.WriteLine($"When bEquipAsSecondary={bEquipAsSecondary},currentWeaponOffhand={currentWeaponOffhand},currentWeaponMainhand={currentWeaponMainhand}");

Output

When bEquipAsSecondary=False,currentWeaponOffhand=4,currentWeaponMainhand=7
When bEquipAsSecondary=True,currentWeaponOffhand=7,currentWeaponMainhand=5
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法使用三元运算符 - 或类似的方法 - 来选择要分配的变量? 的相关文章

随机推荐