gpt4 book ai didi

c# - 如何验证重载构造函数的输入?

转载 作者:太空宇宙 更新时间:2023-11-03 10:38:05 27 4
gpt4 key购买 nike

这是我的代码

public class MyClass
{
int LeftPoints;
int RightPoints;

public MyClass(int points)
: this (points, points)
{
if (points < 0)
throw new ArgumentOutOfRangeException("points must be positive");
}

public MyClass(int leftPoints, int rightPoints)
{
if (leftPoints < 0)
throw new ArgumentOutOfRangeException("leftPoints must be positive");
if (rightPoints < 0)
throw new ArgumentOutOfRangeException("rightPoints must be positive");
}
}

很明显,如果我调用 new MyClass(-1),它会抛出消息“leftPoints must be positive”。

是否可以使用 : this (points, points) 重载第一个构造函数并仍然获得“正确的”验证?

最佳答案

您不能通过从第一个构造函数调用第二个构造函数来实现这一点。

如果是代码重用,您可以采用不同的方法:

public MyClass(int points)
{
if (points < 0)
throw new ArgumentOutOfRangeException("points must be positive");
Init(points, points);
}

public MyClass(int leftPoints, int rightPoints)
{
if (leftPoints < 0)
throw new ArgumentOutOfRangeException("leftPoints must be positive");
if (rightPoints < 0)
throw new ArgumentOutOfRangeException("rightPoints must be positive");
Init(leftPoints, rightPoints);
}

private void Init(int leftPoints, int rightPoints)
{
LeftPoints = leftPoints;
RightPoints = rightPoints;
}

关于c# - 如何验证重载构造函数的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26769666/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com