public class Departman
{
Person _p = new Person();
public Person p
{
get { return _p; }
set { _p = value; }
}
}
public class Person
{
private string _PersonName;
public string PersonName
{
get { return _PersonName; }
set { _PersonName = value; }
}
}
从外面我可以像这样找到人名
Departman dp = new Departman();
dp.p.PersonName;
然而,我无法达到这样的目的:
Departman dp = new Departman { p.PersonName };
我可以做些什么来达到PersonName。
答案 0 :(得分:3)
Departman dp = new Departman {p.PersonName};
这种语法没有任何意义。 当您使用{}创建一个新对象时,它是一个初始化程序。这对于向属性注入值非常有用,因此您可以这样做:
新的Departman {p = new Person {PersonName =“Foo Bar”}}
答案 1 :(得分:2)
假设您要初始化人名,您可以这样做:
Departman dp = new Departman { p = new Person { PersonName = "Joe" } };
PersonName
属性嵌套在Departman
的{{1}}对象中,因此您还需要嵌套初始值设定项。您也可以直接公开Person
,如下所示:
PersonName
这使得以下成为可能:
public class Departman {
Person _p = new Person();
public Person p {
get { return _p; }
set { _p = value; }
}
public string PersonName {
get { return _p.PersonName; }
set { _p = value.PersonName; }
}
}
答案 2 :(得分:0)
由于您要在构造函数中初始化p
,因此您不需要new Person
- 您只需要设置p.PersonName
,即:{/ p>
Departman dp = new Departman { p = { PersonName = "Marc" } };
然而!一个名为p
的属性是一个非常糟糕的主意 - 在PersonName
上Person
似乎相当多余; IMO应该是:
var dp = new Departman { Person = { Name = "Marc" } };
实际上,您甚至不需要set
/ p
属性Person
,因为此方法不使用它:
public class Departman {
private readonly Person person = new Person();
public Person Person { get { return person; } }
}
public class Person {
public string Name {get;set;}
}