Если вы не хотите, чтобы testVar2 был установлен на null
, то, возможно, имеет смысл проверить null
в самом сеттере. В противном случае вы должны помнить, чтобы проверять null
каждый раз, когда вы пытаетесь установить его.
Обратите внимание, что я также модифицировал корпус для соответствия стандартам C #
private MyObj testVar2;
public MyObj TestVar2
{
get { return testVar2; }
set
{
if (value == null) return; // Or throw an ArgumentNullException
if (testVar2 == value) return; // No need to RunSomeCode if the value isn't changing
testVar2 = value;
RunSomeCode();
}
}
Теперь, если ваша задача по-прежнему проверять null
перед установкой свойства (например, если вы решили выбросить исключение в случае значения null
), то с вашим исходным кодом все в порядке код (троичные / нуль-коалесцирующие решения кажутся как-то «расточительными» в том смысле, что они могут что-то устанавливать для себя), и вы можете сделать это в одной строке:
if (testVar1 != null) SomeClass.TestVar2 = testVar1;
Если, однако, вы создаете testVar1
только для того, чтобы захватить результат вызова CheckObject()
, то оператор объединения нулей имеет немного больше смысла, поскольку вам не нужно создавать переменную сохранить значение:
SomeClass.TestVar2 = CheckObject() ?? SomeClass.TestVar2;