[英]Object initialization in C#
當我聲明如下:
class Professor
{
string profid;
public string ProfessorID
{
get { return profid;}
set { profid=value;}
}
student st;
}
class student
{
string name;
string id;
public string Name
{
get { return name;}
set { name=value; }
}
public string StudentID
{
get { return id;}
set { id=value; }
}
}
public void GetDetails()
{
Professor prf=new Professor(){ ProfessorID=1, how to initialize student here?};
}
在GetDetails()里面我如何初始化學生?
首先讓它可訪問:
public student Student { get; set; }
然后像:
Professor prf = new Professor()
{
ProfessorID = "abc",
Student = new student { Name = "Marc", StudentID = "def" }
};
請注意,如果屬性是get-only:
private readonly student _student = new student();
public student Student { get { return _student; }}
然后,您可以使用替代語法(設置屬性而不嘗試更改學生參考):
Professor prf = new Professor()
{
ProfessorID = "abc",
Student = { Name = "Marc", StudentID = "def" }
};
您的Professor
課程將需要為學生設置屬性,此時您可以寫:
public void GetDetails()
{
Professor prf = new Professor {
ProfessorID = "1",
Student = new Student { Name = "Jon", StudentID = "1" }
};
}
如果沒有該屬性, Professor
類中的任何內容都不會設置st
變量。
請注意,因為在這兩種情況下我們只使用無參數構造函數,所以我從對象初始值設定項中刪除了explicit ()
。
進一步說明:自動實現的屬性可以使您的代碼更短:
class Professor
{
public string ProfessorID { get; set; }
public Student Student { get; set; }
}
class Student
{
public string Name { get; set; }
public string StudentID { get; set; }
}
你應該在教授的房地產學生:
class Professor
{
string profid;
public string ProfessorID
{
get { return profid; }
set { profid = value; }
}
student st;
public student Student { // New property
get { return st; }
set { st = value; }
}
}
class student
{
string name;
string id;
public string Name
{
get { return name; }
set { name = value; }
}
public string StudentID
{
get { return id; }
set { id = value; }
}
}
public void GetDetails(){
Professor prf=new Professor(){ ProfessorID="1", Student = new student()};
}
教授需要為學生提供一個訪問器
class Professor
{
string profid;
public string ProfessorID
{
get { return profid;}
set { profid=value;}
}
public Student {
get { return st;}
set { st=value;}
}
student st;
}
public void GetDetails()
{
Student s = new Student();
s.StudentId = someId;
s.name = someName;
Professor prf = new Professor { ProfessorID=1, Student = s;};
}
但是,你現在的模特是1名教授:1名學生,你確定這是你想要的嗎?
跟進約翰的回答:
你想要括號,而不是括號,但公共構造函數通常是正確的方法。 另一種方法是使用公共屬性的無參數構造函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.