Вывод C# - это как-то имя программы и имя класса

Я пытаюсь выполнить сумасшедшие инструкции по форматированию, которые дал мне мой учитель. Пролистав около часа (это моя первая программа на C#), я придумал эту строку кода.

`Console.WriteLine(String.Format("{0," + -longestTitle + "} | {1," + -longestAlbumTitle + "} | {2," + -longestArtist + "} | {3:0.00, 8} | {4," + -longestYearAndRating + "} |", songArray[arraySearcher].title, songArray[arraySearcher].albumTitle, songArray[arraySearcher].artist, songArray[arraySearcher].length, songArray[arraySearcher].yearAndRating));`

longestX - это целое число, содержащее количество символов longestX (where x = title, альбом и т. д.).

Вывод, который я хотел бы, выглядит примерно так:

Stuff | morestuff | extrastuff |   5.92 | 1992:R  |
Stuf  | est       | sfafe      | 232.44 | 2001:PG |
S uf  | e         | sfe        |    .44 | 2001:G  |

(Где все отступы определяются динамически на основе самого длинного заголовка, введенного пользователем или файлом).

Вывод, который я получаю, выглядит следующим образом:

Program_Example.ClassName
Program_Example.ClassName

(или, в частности, Tyler_Music_Go.Song)

Я напечатал songArray[arraySearcher].title в этом же методе, и он отлично работает.

Может ли кто-нибудь помочь мне?

Полный соответствующий код:

class Song {
    public string title, albumTitle, yearAndRating, artist;
    public float length;

    public Song(string titl, string albumTitl, string art, float leng, string yrNRating) 
    {
        title = titl;
        albumTitle = albumTitl;
        yearAndRating = yrNRating;
        length = leng;
        artist = art;
    }
}

//This class contains a Song array (with all Songs contained within), an array index, a search index, and ints to determine the longest of each category.
class SongList 
{
    Song[] songArray;
    private int arrayKeeper, longestTitle, longestArtist, longestAlbumTitle, longestYearAndRating, checker;
    int arraySearcher = 0;

    public SongList() 
    {
        songArray = new Song[10000];
        arrayKeeper = 0; 
        longestTitle = 0;
        longestArtist = 0;
        longestAlbumTitle = 0;
        longestYearAndRating = 0;
    }

    public void AddSong(string title, string albumTitle, string artist, float length, string yearAndRating)
    {
        songArray[arrayKeeper] = new Song(title, albumTitle, artist, length, yearAndRating);
        arrayKeeper++;
        checker = 0;

        //This section of code is responsible for formatting the output. Since the longest values are already known, the list can be displayed quickly. 
        //Once a song is deleted, however, previously calculated longest lengths still stand.
        foreach (char check in title)
        {
            checker++;
        }
        if (checker > longestTitle)
        {
            longestTitle = checker;
        }

        foreach (char check in albumTitle)
        {
            checker++;
        }
        if (checker > longestAlbumTitle)
        {
            longestAlbumTitle = checker;
        }

        foreach (char check in artist)
        {
            checker++;
        }
        if (checker > longestArtist)
        {
            longestArtist = checker;
        } 

        foreach (char check in yearAndRating)
        {
            checker++;
        }
        if (checker > longestYearAndRating)
        {
            longestYearAndRating = checker;
        } 

    }

    //public bool RemoveSong(string title)
   // {
    //}

    public void DisplayData()
    {
        Console.WriteLine("|          Title          |          Album Title          |          Artist          |          Length           |          Year and Rating          |");
        for (arraySearcher = 0; arraySearcher < arrayKeeper; arraySearcher++)
        {
            //This line for testing purposes. (works)
            Console.WriteLine(songArray[arraySearcher].title);
            Console.WriteLine(songArray[arraySearcher].ToString());
        }
    }

    public override string ToString() 
    {
        //This line for testing purposes. (works)
        Console.WriteLine(songArray[arraySearcher].title);
        return String.Format("{0," + -longestTitle + "} | {1," + -longestAlbumTitle + "} | {2," + -longestArtist + "} | {3:0.00, 8} | {4," + -longestYearAndRating + "} |", songArray[arraySearcher].title, songArray[arraySearcher].albumTitle, songArray[arraySearcher].artist, songArray[arraySearcher].length, songArray[arraySearcher].yearAndRating);
    }
}

`

РЕДАКТИРОВАТЬ:

Ну, а теперь я чувствую все поместье глупых. Я переписывал метод tostring() для SongList, а затем вызывал метод tostring для Song. Парень, который ответил, заставил меня понять это. Спасибо всем, кто дал мне совет, хотя.

1 ответ

Решение

Вы должны получить доступ к собственности напрямую (songVariable.Title) или переопределить ToString() в вашем классе песни, чтобы получить этот заголовок.

public class Song
{
    public string Title {get; set;}

    public override string ToString()
    {
        return Title;
    }
}
Другие вопросы по тегам