-3
votes

Comment ajouter des objets à une liste privée avec une méthode?

Vous pouvez voir la liste que j'ai créée est privée et je souhaite pouvoir ajouter des objets à la liste ASWELL que montrez à l'utilisateur la liste via des méthodes AddBook () et des Showbooks ().

public class Library
{
    private List<Book> Books = new List<Book>();       

    public static void AddBook()
    {
    }

    public static void ShowBooks()
    {
        foreach (Book item in Books)  
        //This foreach-loop doesn't work since its a private list.
        {
            Console.WriteLine("Books found");
        }
    }
}


3 commentaires

La variable n'est pas statique.Vous devez jeter un coup d'œil sur Ce fil sur statique


Pourquoi feriez-vous les méthodes statiques?


Quel est le but de ce code? Comment comptez-vous l'utiliser? Quel est le but de la liste privée? S'il vous plaît expliquer clairement ce que vous essayez de faire


3 Réponses :


0
votes

Si vous ne voulez pas utiliser statique sur la collection de livres, faites ceci:

public class Library
{
    private List<Book> Books = new List<Book>();       

    public void AddBook()
    {
    }

    public void ShowBooks()
    {
        var library = new Library();
        foreach (Book item in Books)  
        {
            //This foreach-loop doesn't work since its a private list.
            library.Books.Add(item);
            Console.WriteLine("Books found");
        }
    }
}


0 commentaires

-1
votes

Le problème est que votre instance de liste est non statique, alors que vos méthodes sont. Vous devez soit modifier votre liste pour être statique, soit vos méthodes pour être non statiques. Après une bonne conception OO, je vous suggère de supprimer le modificateur statique de vos méthodes. J'ai également appliqué un modificateur réadonné à votre liste et l'avons modifié pour être ICollection, car vous ne semblez pas avoir besoin d'un accès indexé. Et a également appliqué certains modèles de dénomination courants.

public class Library
{
    private readonly ICollection<Book> _books = new List<Book>();       


    public void AddBook(Book book)
    {
        _books.Add(book);
    }

    public void ShowBooks()
    {
        foreach (Book item in _books)  
        {
            Console.WriteLine("Books found");
        }
    }
}


1 commentaires

Parce que du code des auteurs, la liste n'est créée qu'une fois nouvelle liste () . Notez que seule la liste est en lecture seule, pas les éléments de la liste. Vous pouvez toujours ajouter de nouveaux articles à la liste. Sinon, vous l'exposeriez comme un iReadonlycollection .



0
votes

Si vous souhaitez utiliser des méthodes statiques, vous pouvez essayer ce xxx

à l'aide du système.Collections.Generic; xxx

sans méthodes statiques Vous pouvez essayer ce xxx


0 commentaires