【问题标题】:Setting the argument/parameter in C#在 C# 中设置自变量/参数
【发布时间】:2018-03-14 02:04:16
【问题描述】:

我一直在为 C# 初学者做一个班级作业。我已经到了不知道下一步该做什么的地步。这是问题,它涉及参数/参数...

定义“area”属性计算的输出,以便用户可以通过设置名为“radius”的参数/参数(在构造函数中)来初始化“Circle”类的实例,然后调用名为“ShowArea”的方法使用公式显示新圆实例的面积:(其中 r = 半径,A = 面积,π= pi)

这是我目前所拥有的:

 namespace IndividualAssignment2
 {
     public class Shape
     {
         public virtual int area { get; set; }
     }

     public class Circle : Shape
     {
         double radius;
         public override int area { get; set; }
         double ShowArea = 3.14 * Math.Pow(radius,2);
     }

     public sealed class Square : Shape
     {
         int height;
     }
 }

如何在我的代码中实现这一点?我的双 ShowArea 不正确,因为半径带有下划线。我认为理解这个问题将有助于解决这个问题。谢谢。

【问题讨论】:

  • 我猜 ShowArea 应该是这些类之外的方法,它接受 Shape 然后打印 area 属性,而不是 Circle 上的方法。 Arun 的答案是朝着正确方向迈出的一步,但我猜它应该将计算的区域保存到区域,除非您计划存储半径并在获取时动态计算它(然后您需要实现 set to 来反转计算并保存半径)
  • 顺便说一句,您在这里得到半径下划线的原因是因为您在对象创建时初始化字段 ShowArea,而半径尚未设置。

标签: c# parameters arguments


【解决方案1】:

如果我的理解正确,ShowArea 是一种方法,而不是一个字段。这意味着您的 Circle 类应该是这样的:

public class Circle : Shape
{
    double _radius;

    // Constructor for the Circle that has radius as a parameter
    public Circle(double radius)
    {
        _radius = radius;
    } 

    // Method that returns the area of the circle using radius value from constructor
    public double ShowArea() 
    {
        return Math.Pi * Math.Pow(_radius, 2.0);
    }
}

【讨论】:

  • 参数就是用户输入的内容,放在方法后面的括号里?
  • 没错!在这种情况下,因为您已经在构造函数中提供了半径,所以我们可以将该值用于方法 ShowArea。但除此之外,您必须像我最初所做的那样为方法提供参数。
【解决方案2】:

您的课程设计必须经过审核。

public abstract class Shape
{
    public abstract double Area { get; }
}

public class Circle : Shape
{
    public Circle(double radius)
    {
        Radius = radius;
    }

    private double Radius { get; set; }


    public override double Area => 3.14 * Math.Pow(Radius, 2);
}

public class Square : Shape
{
    public Square(double edge)
    {
        Edge = edge;
    }

    private double Edge { get; set; }


    public override double Area => Math.Pow(Edge, 2);
}

【讨论】:

    【解决方案3】:

    您对方法ShowArea 的声明不正确。您改为声明 field。 您应该阅读更多关于methods 的内容。你还需要声明一个带有参数的constructor 来设置radius,我在你的代码中没有找到它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-25
      • 1970-01-01
      相关资源
      最近更新 更多