簡體   English   中英

C#中的對象初始化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM