Более простой обходной путь - иметь две логические переменные.
Один будет держать ноль / не-ноль
а другой останется истинным / ложным
Приложение из этого:
Когда вы кэшируете вычисление в логическом свойстве, вам нужно знать, было ли оно уже установлено или нет.
, например
// actual variable having true/false
private bool isX = false;
// variable holding wither above is set/not-set i.e. null/not-null
private bool isXSet = false;
public bool IsX
{
get
{
if (isXSet)
{
return isX;
}
else
{
isX = GetX(); // this could be time consuming.
isXSet = true;
return isX;
}
}
}
Это становится полезным при настройке производительности, когда приведенный выше GetX () отнимает много времени и к IsX обращаются много раз.