c#构造函数和默认值

时间:2014-11-16 14:52:33

标签: c# constructor

我对c#很新。想在我的POCO中有默认值。 Path2应该依赖于Path1或分别扩展它。

public class Config
{
    public string Path1 { get; set; }
    public string Path2 { get; set; }
...
}

public Config()
{ Path1 = "testpath";
  Path2 = path1 + "bla";
  ...}

如果用户现在更改了UI中的Path1,我希望Path2也相应地更改。

Config testconfig = new Config();
testconfig.Path1 = "changed";

但Path2停留在“testpath bla”而不是“change bla”。

我想我错过了一些必不可少的东西。 有人可以把我踢向正确的方向吗?

此致

2 个答案:

答案 0 :(得分:2)

如果Path2的第二部分是常数,那么你可以使用它:

public string Path2 
{
    get { return string.Format("{0}{1}", Path1, "bla"); }
}

而不是将Path2设为自动属性。

修改

根据评论,也许这就是你想要的

public class Config
{
    private string path1;
    private string path2;

    public string Path1 
    { 
        get { return path1;}
        set
        {
            path1 = value;
            Path2 = string.Format("{0}bla", value);
        }
    }

    public string Path2 
    {
        get { return path2; }
        set { path2 = value; }
    }

    public Config()
    {
        Path1 = "testpath";
    }
}

这会在设置Path1时随时同步Path2Path1,但也可以Path2设置为完全独立

答案 1 :(得分:1)

字符串不起作用。当你追加它时,你正在创建一个单独的新字符串(我内部意思),所以你的更改不会'传播'。

要为固定值解决此问题,您可以使用Flat Eric's answer.

在阅读了有关“默认值”的评论并仍然可以进行更改后,我会提出类似的建议

private string _path2 = null;

public string Path1 {get;set;}
public string Path2 
{
get {

if (String.IsNullOrEmpty(_path2))
{
return Path1 + "bla"; //Or your default value
}
else 
{
return _path2;
}

}

set 
{
_path2 = value;
}

}