所以我创建了一个类,其中包含相册名称的属性,包括它们的类型,名称和艺术家,以及一个包含轨道列表的数组。编译时,属性的默认值被替换,但我不知道如何替换数组的默认值 - 我不知道如何用每个专辑的新曲目替换默认曲目列表。感谢。
这是CD.cs文件:
AppBarLayouts
这是main.cs文件:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Exercise_2
{
class Cd
{
string name;
string artist;
string genre;
public string[] tracklist;
public string[] newTracklist;
public string getName()
{
return name;
}
public void setName(string newName)
{
name = newName;
}
public string getArtist()
{
return artist;
}
public void setArtist(string newArtist)
{
artist = newArtist;
}
public string getGenre()
{
return genre;
}
public void setGenre(string newGenre)
{
genre = newGenre;
}
public string[] getTracklist()
{
return tracklist;
}
public void setTracklist(string[] newTracklist)
{
string[] tracklist = newTracklist;
}
public Cd()
{
this.name = "CD Name";
this.artist = "CD Artist";
this.genre = "CD Genre";
this.tracklist = new string[3] { "Track1", "Track2", "Track3" };
this.newTracklist = new string[3] { "newTrack1", "newTrack2", "newTrack3" };
}
}
}
答案 0 :(得分:2)
问题是你的setTracklist方法每次都会创建一个新数组:
1800px
相反,您需要设置实例 public void setTracklist(string[] newTracklist)
{
string[] tracklist = newTracklist;
}
成员:
tracklist
还有一条建议。不要创建方法来获取和设置属性,这只是不必要的工作。变化:
public void setTracklist(string[] newTracklist)
{
tracklist = newTracklist;
}
要:
string name;
string artist;
string genre;
public string[] tracklist;
public string[] newTracklist;
您还可以将public string Name {get; set;}
public string Artist {get; set;}
public string Genre {get; set;}
public string[] Tracklist {get; set;}
更改为tracklist
,以便轻松添加曲目:
List<String>
如果您这样做,您可以更轻松地创建public List<String> Tracklist {get; set;}
实例 lot :
Cd
<强>更新强>
这里有完整的代码,万一有些事情搞砸了。我还实现了一个var newCD = new Cd
{
Name = "Kill 'Em All",
Artist = "Metallica",
Genre = "Thrash Metal"
};
newCD.Tracklist.Add("Hit the Lights");
newCD.Tracklist.Add("The Four Horsemen");
newCD.Tracklist.Add("Motorbreath");
// etc etc
方法,它以逗号分隔的形式返回所有曲目。
getTracklist
答案 1 :(得分:1)
你要写
CD1.setTrackList(new string[] {"Hit The Lights", "The Four Horsemen", "Motorbreath"});
您的setTrackList
应为:
public void setTracklist(string[] newTracklist)
{
tracklist = newTracklist;
}
您最初编写它的方式是,每次设置时都创建了一个新的轨道数组,而不是设置后备属性。
但是,有一种更好的方法可以做到这一点。 C#有什么叫Auto Properties。他们为您处理这一切。
public string Name {get; set;}
public string Artist {get; set;}
//.... etc