我是编程新手,目前正在参加C#课程。这周的任务让我迷失了。这是我的任务:
创建一个包含“距离”类的文件。内部距离保持在1/64英寸的精度。
距离必须有一个私有无符号整数变量“SixtyFourths”,这个整数的确切值应该是距离所代表的1/64英寸的数量。
创建一个属性“Inches”以获取并设置距离为双倍的英寸距离。
创建一个属性“Feet”来获取和设置距离的双倍值。
创建属性“Meters”以获取并设置距离为米的双倍值。
创建属性“FtInFraction”以将当前距离作为字符串获取,或者设置与字符串的距离,您必须使用的字符串格式如下所示。
根据需要编写私有方法以完成所需的工作。只有属性和构造函数可能是公开的。
将浮点值转换为整数时,请务必使用正确的舍入规则。
在“main”中写一个简短的程序。内部主要:
创建由您的班级定义的对象距离的实例。
距离演示=新距离(); Demo.Feet = 1.1; string FeetInchesFraction = Demo.FtInFraction; //应该是:“1'1 13/64”“Demo.FtInFraction =”3'3 3/8“”;双米= Demo.Meters; //由于四舍五入将为1.00125米
使用控制台输出的屏幕截图进行详尽的测试。详尽的测试通过几千种可能性来运行该类,以验证FtInFraction在所有情况下生成和解释字符串值。这可以通过循环轻松完成。
以下是我为该课程编写的代码:
namespace Measurement_Converter
{
class Distance
{
public double Meters
{
get
{
return Meters;
}
set
{
Meters = 0;
}
}
// Feet
public double Feet
{
get
{
return Meters / .30480;
}
set
{
Meters = value * 3.34375;
}
}
public string FeetString
{
get
{
StringBuilder SB = new StringBuilder();
return SB.ToString();
}
set
{
string raw = value;
}
}
// Inches
private int SixtyFourths;
public double Inches
{
get
{
return SixtyFourths;
}
set
{
SixtyFourths = 0;
if (value % 2 == 0)
return;
SixtyFourths = (int)(value / 2);
}
}
public double FtInFraction
{
get
{
return FtInFraction;
}
set
{
}
}
}
}
以下是我为主要编写的代码:
namespace Measurement_Converter
{
class Program
{
static void Main(string[] args)
{
Distance T = new Distance();
T.Meters = 12;
string Test = T.FeetString;
}
}
}
我目前的问题是我在我的米类的设置部分得到了stackoverflowexception。我肯定会遇到的问题是由于我缺乏经验。我希望有人可以帮助我理解堆栈溢出错误,并可能帮助我了解我可能需要对程序的其余部分做什么,或者至少是一个类似的例子,我可以用它来试图理解这个外语。此外,我得到了作业的要点,但如果有人可以尝试用外行的术语解释测试部分。我不希望别人为我做我的工作,但这项任务对我来说非常困惑,这让我感到非常沮丧。
答案 0 :(得分:5)
您的Metres
属性与支持字段(变量)具有相同的名称,并且正在递归调用。您可能会对自动属性感到困惑,而不是宣布支持'现场自己。
你可以这样实现:
class Distance
{
private double _meters;
public double Meters
{
get
{
return _meters;
}
set
{
_metres = value;
}
}
.....
或者像这样:
class Distance
{
public double Metres{ get; set; }
....