从字符串中检索特定数字

时间:2013-11-29 08:58:45

标签: c# properties struct set accessor

我正在实现复数结构,我希望用户可以通过属性 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,这样我就可以将它们放入双字段中。

1 个答案:

答案 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]);
    }
}