【发布时间】:2017-01-24 00:19:58
【问题描述】:
我有以下对象(类)。
namespace Temp.Models
{
public class CurrentClass
{
private double _firstCoefficient;
private double _secondCoefficient;
public double FirstCoefficient
{
get { return _firstCoefficient; }
set { _firstCoefficient= value; }
}
public double SecondCoefficient
{
get { return _secondCoefficient; }
set { _secondCoefficient= value; }
}
}
}
下面的类利用了上面的对象,因此初始化对象如下:
namespace Temp.Models
{
public class MainClass
{
private CurrentClass _currentClass = new CurrentClass();
public CurrentClass CurrentClass
{
get { return _currentClass; }
set { _currentClass = value; }
}
}
}
如果满足某些条件,我会按如下方式定义变量:
MainClass currentObject = new MainClass();
//if conditions are met
currentObject.CurrentClass.FirstCoefficient = 0;
currentObject.CurrentClass.SecondCoefficient = 5;
但是如果条件从未满足并且我从未定义上述变量怎么办。检查对象是否从未定义过的最佳方法和/或最佳方法是什么?
我可以做以下检查:
if(currentObject.CurrentClass.FirstCoefficient != 0 && currentObject.CurrentClass.SecondCoefficent != 0)
但是这些值可以定义为 0...所以我不知道该怎么做。
非常感谢任何帮助!
【问题讨论】:
-
考虑使用类型“double?”而不是“双”,那么你可以检查 null
-
我认为您不只是对条件进行相同的检查而不是检查
CurrentClass实例是有原因的? -
@ScottPerham 我明白你的意思,这将是这个对象的合理解决方案,但我实际上还有其他具有多种不同类型的对象。包括枚举等等……那么在这种情况下你会怎么做?
-
最好的办法是使用不可变类完全避免这个问题(通过构造函数进行参数化,使所有字段/属性只读)。因此,任何现有对象都必须处于有效状态。如果您不能这样做,请使用
Nullable<T>,但要准备好到处进行大量不必要的一致性检查。 -
@Crowcoder 我将如何检查实例本身?我尝试设置 CurrentClass != null 但它认为该对象即使未定义(仅在初始化时)也确实不为 null...
标签: c# .net object if-statement syntax