使用三元运算符的缺点

pra*_*ptp 4 c#-4.0

我的源代码中包含以下语句

int tableField1;
int tableField2;

int propertyField1;
int propertyField2;

if (tableField1 != null)
{
  propertyField1 = tableField1;
}

if (tableField2 != null)
{
  propertyField2 = tableField1;
}

// the above pattern is repeated for 10 tablefields ie tableField3, tableField4... tableField10
Run Code Online (Sandbox Code Playgroud)

我使用三元运算符减少了上述数据,如下所示

propertyField1 = tableField1 != null ? tableField1 : propertyField1;
propertyField2 = tableField2 != null ? tableField2 : propertyField2;
Run Code Online (Sandbox Code Playgroud)

以下是我的问题:

1)三元运算符的使用效率低于if语句.

2)使用三元运算符有哪些缺点(如果有的话).

Jon*_*eet 11

为什么不使用空合并运算符呢?

propertyField1 = tableField1 ?? propertyField1;
Run Code Online (Sandbox Code Playgroud)

不可否认,将原始值分配回同一个变量看起来有些奇怪.它可能会比if声明的效率略低,因为理论上你正在读取价值并再次分配它......但如果JIT将其删除,我也不会感到惊讶.无论如何,这绝对是微优化的水平.

有些人认为有条件的经营者为可读性是坏的-我通常认为这是罚款这样的简单语句,虽然它有点模糊的"只更改值,如果我们有一个新的"的含义.