我正在实现复数结构,我希望用户可以通过属性 Geo 将值插入 Re 和 Im 字段,这是复数的几何解释,例如(5,-3)。
struct Cplx
{
public double Re;
public double Im;
public string Geo
{
get
{
return "(" + Re + "," + Im + ")";
}
}
}
我不知道如何制作 set 访问者。基本上,我想从(x,y)字符串中检索数字x,y,这样我就可以将它们放入双字段中。
答案 0 :(得分:2)
只需解析包含(5,-3)等输入的value
,删除括号和空格,并将值转换为double。
set
{
var input = value.Split(new[] { '(', ')', ',' }, StringSplitOptions.RemoveEmptyEntries);
Re = Convert.ToDouble(input[0]);
Im = Convert.ToDouble(input[1]);
}
只需注意,结构应该是不可变的,所以我建议将值传递给构造函数,而不是通过属性设置它们。这将是一种正确的方法
struct Cplx
{
public readonly double Re;
public readonly double Im;
public string Geo
{
get
{
return "(" + Re + "," + Im + ")";
}
}
public Cplx(double re, double im)
{
Re = re;
Im = im;
}
public Cplx(string cplx)
{
var input = cplx.Split(new[] { '(', ')', ',' }, StringSplitOptions.RemoveEmptyEntries);
Re = Convert.ToDouble(input[0]);
Im = Convert.ToDouble(input[1]);
}
}