我有2個類:Track.cs和TrackList.cs,Track.cs用於保存軌道中的數據。在TrackList中,我想將Track.cs的對象保存在列表中。C#|在構造函數中初始化List <class object>
這是代碼我目前有:
class TrackList
{
private List<Tracks> tracks;
public TrackList()
{
tracks = new List<Tracks>();
}
public TrackList(List<Tracks> tracks)
{
this.tracks = new List<Tracks>(tracks);
}
}
我從此明白的是,當我創建這個類的一個對象:曲目TC =新專輯曲目()列表中會得到,如果我初始化不要添加參數,但是當我發送一個Track.cs對象作爲參數時,它會添加到曲目列表中。
但有人說我應該用this.tracks = tracks;
而不是this.tracks = new List<Tracks>(tracks);
。但我不明白爲什麼,因爲如果我使用this.tracks = tracks;
我沒有使用= new List<Tracks>;
部件,所以它不會被初始化。或者我錯誤地思考?
是不是一樣的,如果我在我的任務做
int id;
public MyClass()
{
id = 0;
}
public MyClass(int id)
{
this.id = id;
}
而且它說的參數列表需要被分配到軌道列表類的列表。
編輯2
我的新後,雖然評論 private List<Tracks> tracks;
是沒有什麼參考大氣壓。 this.tracks = tracks
使軌道列表^引用與參數 this.tracks = new List<Tracks>(tracks);
發送的列表將創建一個新列表,所以軌道列表現在將引用該新列表,並且新列表具有與發送的列表相同的內容參數。
所以用我使用的方法(最後一個)有兩個列表存在相同的內容,但private List<Tracks> tracks;
將引用該新列表,我不知道用參數發送的列表會發生什麼。
編輯3
看來,我在編輯2假設是正確的。非常感謝你們的幫助。乾杯!
「某人」是正確的。您已經聲明瞭它,並且您只是將現有的「軌道」參數傳遞到另一個容器的類中。不需要另一個「新」。將現有列表傳遞給「this.tracks」正在初始化它。 –
另外,您需要使用構造函數鏈接。 'public TrackList():this(new List()){}'。使用鏈接可防止在構造函數重載時出現錯誤。這種氣味是你有多個構造函數實例化/設置相同的字段/屬性。 –
Will
但我從來沒有說'tracks = new List();'那麼這不就意味着它沒有被初始化?或者當我添加對象時它會自動初始化? –