如何在实例化时填充字符串数组?

时间:2016-01-21 21:03:17

标签: c#

所以我创建了一个类,其中包含相册名称的属性,包括它们的类型,名称和艺术家,以及一个包含轨道列表的数组。编译时,属性的默认值被替换,但我不知道如何替换数组的默认值 - 我不知道如何用每个专辑的新曲目替换默认曲目列表。感谢。

这是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" };
    }

}
}

2 个答案:

答案 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