首页 > 解决方案 > 数组 c# 初学者

问题描述

我不太了解数组,我需要创建一个“歌曲数组”类型的变量,然后将其初始化为一个新数组,以便它可以存储 4 个对歌曲的引用。然后我将如何创建一个循环,该循环将运行足够的时间来填充数组,同时调用该InputSOngDetails()方法并将返回值存储在该方法中?

namespace Songs
{
    class Program
    {
        static void Main(string[] args) {
            InputSongDetails();
        }

        static Song InputSongDetails()
        {
            Console.WriteLine("What is the name of your song");
            string name = Console.ReadLine();

            Console.WriteLine("What is the artists name");
            string artist = Console.ReadLine();

            int records;
            Console.WriteLine("How many records did it sell");
            while (!int.TryParse(Console.ReadLine(), out records) || records < 0)
            {
                Console.WriteLine("That is not valid please enter a number");
            }
            return new Song(name, artist, records);
        }
    }
}

如果需要,这是我的歌曲课

namespace Songs
{
    class Song
    {
        string name;
        string artist;
        int copiesSold;

        public Song(string name, string artist, int copiesSold)
        {
            this.name = name;
            this.artist = artist;
            this.copiesSold = copiesSold;
        }

        public Song()
        {
        }

        public string GetArtist()
        {
            return artist;
        }

        public string GetDetails()
        {
            return $"Name: {name} Artist: {artist} Copies Sold: {copiesSold},";
        }

        public string GetCertification()
        {
            if (copiesSold<200000)
            {
                return null;
            }
            if (copiesSold<400000)
            {
                return "Silver";
            }
            if (copiesSold<600000)
            {
                return "gold";
            }
            return "Platinum";  
        }
    }
}

标签: c#arrays

解决方案


拳头,用 初始化你的歌曲数组,然后一个简单的循环就足够了。new Song[ length ]for

static void Main(string[] args) 
{
    Song[] songs = new Song[4];
    for(int i = 0; i < songs.Length; i++) 
    {
        songs[i] = InputSongDetails();
    }
}

或者正如评论者所建议的那样,只需使用 variable-length List<Song>

static void Main(string[] args) 
{
    List<Song> songs = new List<Song>();
    for(int i = 0; i < 4; i++) 
    {
        songs.Add(InputSongDetails());
    }
}

一旦你掌握了基础知识,你也可以用一点 Linq 来完成这个(尽管在这种情况下我实际上并不推荐它):

static void Main(string[] args) 
{
    var songs = Enumerable.Range(0, 4)
                          .Select(i => InputSongDetails())
                          .ToList();
}

推荐阅读