一种可能性是向您的类添加一个参数化构造函数,该类没有x 和y 作为参数,而是A、B、C 和D。
public class ModelA
{
public ModelA(int A, int B, int C, int D)
{
X = A-B <= 0 ? 0 : A - B;
Y = C - D > 0 ? C-D : int.MinValue;
}
public int X { get; set; }
public int Y { get; set; }
}
现在您可以使用
创建新对象了
ModelA objectA = new ModelA(A1, B1, C1, D1);
ModelA objectB = new ModelA(A2, B2, C2, D2);
您可以选择添加构造函数重载。
// Default constructor. Allows you to use an object initializer.
public ModelA()
{
}
// Or pass x and y as constructor arguments instead of using an object initializer.
public ModelA(int x, int y)
{
X = x <= 0 ? 0 : x;
Y = y > 0 ? y : int.MinValue;
}
最后一个变体允许您创建这样的对象,同时让构造函数执行所有范围检查
ModelA objectA = new ModelA(A - B, C - D);
当然,您也可以在属性设置器中进行这些检查:
private int _x;
public int X
{
get {
return _x;
}
set {
X = value <= 0 ? 0 : value;
}
}
private int _y;
public int Y
{
get {
return _y;
}
set {
Y = value > 0 ? value : int.MinValue;
}
}
如果您需要可变属性,这是最安全的版本,因为始终会执行检查,无论您是使用构造函数还是对象初始化器,还是在对象生命周期的后期更改属性。
与往常一样,您有很多选择。哪个最好,取决于您的需求。