我如何修复此 class 中的 "Stack overflow" 错误
How can I fix "Stack overflow" error in this class
“直径”的构造函数和 setter 之间似乎存在冲突。
当我尝试定义 Sphere 对象时出现错误。
using System;
namespace Challenge6
{
class Sphere
{
public double Diameter
{
get => Diameter;
set => Diameter = value;
}
public double Volume => (4.0 / 3.0) * Math.PI * Math.Pow(Diameter, 3) / 8.0;
public double Surface => 4 * Math.PI * Math.Pow(Diameter, 2) / 4.0;
public Sphere (double dia)
{
Diameter = dia;
}
}
}
如果我实例化你的 class 并请求 Diameter 的值 属性,它会转到 Diameter 的“get”方法,returns Diameter 属性 - 为了做到这一点,转到 Diameter 的“get”方法,returns Diameter 属性,哪个....你现在看到问题了吗?你最终会得到无限递归。
您是否有任何特殊原因不只是编写标准的自动实现 属性?
public double Diameter { get; set; }
会满足您的所有需求。
“直径”的构造函数和 setter 之间似乎存在冲突。 当我尝试定义 Sphere 对象时出现错误。
using System;
namespace Challenge6
{
class Sphere
{
public double Diameter
{
get => Diameter;
set => Diameter = value;
}
public double Volume => (4.0 / 3.0) * Math.PI * Math.Pow(Diameter, 3) / 8.0;
public double Surface => 4 * Math.PI * Math.Pow(Diameter, 2) / 4.0;
public Sphere (double dia)
{
Diameter = dia;
}
}
}
如果我实例化你的 class 并请求 Diameter 的值 属性,它会转到 Diameter 的“get”方法,returns Diameter 属性 - 为了做到这一点,转到 Diameter 的“get”方法,returns Diameter 属性,哪个....你现在看到问题了吗?你最终会得到无限递归。
您是否有任何特殊原因不只是编写标准的自动实现 属性?
public double Diameter { get; set; }
会满足您的所有需求。