Python中C#条件运算符(?)的版本

7 投票
2 回答
1286 浏览
提问于 2025-04-17 03:53

我看到这个问题,但它使用??运算符来检查空值,我想用它来测试布尔值的真或假。

我在Python中有这段代码:

if self.trait == self.spouse.trait:
    trait = self.trait
else:
    trait = defualtTrait

在C#中我可以这样写:

trait = this.trait == this.spouse.trait ? this.trait : defualtTrait;

在Python中有没有类似的方法可以做到这一点?

2 个回答

1

关于C#中的空合并运算符,你提到的用法是不正确的。这种写法在编译时就会出错。

在C#中,正确的写法应该是这样的:

trait = this.trait == this.spouse.trait ? self.trait : defaultTrait

空合并运算符在C#中会返回一系列值中第一个不为null的值(如果所有值都是null,则返回null)。举个例子,如果你想在C#中返回第一个不为null的特性,或者在所有特性都是null的情况下返回一个默认特性,实际上应该这样写:

trait = this.spouse.trait ?? self.trait ?? defaultTrait;
15

是的,你可以这样写:

trait = self.trait if self.trait == self.spouse.trait else defaultTrait

这在Python中被称为条件表达式

撰写回答