gpt4 book ai didi

c# - 如何将值传递给构造函数?

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

很抱歉我的问题有点理论化

我是 OOP 的新手,正在研究以下代码。

public interface IShape
{
double getArea();
}

public class Rectangle : IShape
{
int lenght;
int width;

public double getArea()
{
return lenght * width;
}
}

public class Circle : IShape
{
int radius;

public double getArea()
{
return (radius * radius) * (22 / 7);
}
}

public class SwimmingPool
{
IShape innerShape;
IShape outerShape;

SwimmingPool(IShape _innerShape, IShape _outerShape)
{
//assignment statements and validation that poolShape can fit in borderShape;
}

public double GetRequiredArea()
{
return outerShape.getArea() - innerShape.getArea();
}

}

此代码计算不同形状的面积。我可以看到 SwimingPool 类的构造函数,但我不知道如何将值传递给构造函数。我以前没有使用接口(interface)进行过编程。请指导我三件事:

  1. 如何在设计时传递值。
  2. 如何在运行时传递值(当两个参数都可以是任何类型时)。
  3. 如何以面向对象的方式在这里进行验证?

感谢您的宝贵时间和帮助。

最佳答案

嗯,您正在使用接口(interface),因此在您的 SwimmingPool 类中,构造函数将需要两个 IShape 参数。由于您需要一个实现才能使用您的界面,例如您的 RectangleCircle,您只需执行如下操作:

class Pool
{
private IShape _InnerShape;
private IShape _OuterShape;

public Pool(IShape inner, IShape outer)
{
_InnerShape = inner;
_OuterShape = outer;
}

public double GetRequiredArea()
{
return _InnerShape.GetArea() - _OuterShape.GetArea();
}

}

用法类似于

IShape shape1 = new Rectangle() { Height = 1, Width = 3 };
IShape shape2 = new Circle() { Radius = 2 };

Pool swimmingPool = new Pool(shape1, shape2);
Console.WriteLine(swimmingPool.GetRequiredArea());

根据您的评论,您似乎想要测试一个对象是否实现了一个接口(interface)。

你可以这样做

if (shape1 is Circle) //...

关于c# - 如何将值传递给构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9542820/

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