2016-08-22 6 views
-2

私はoopを勉強しようとしていますが、何時間も立ち往生しています。リストに新しい物を追加する

static void Main(string[] args) 
{ 
    Class1 cls = new Class1("",0); 
    cls.kitapAdi= "book name"; 
    cls.sayfaSayisi= 22; 
    bool sonuc = cls.AddBook(cls); 
} 

とオブジェクトクラス(クラス1):

public Class1(string ali, int mehmet) 
    { 
     this.kitapAdi = ali; 
     this.sayfaSayisi = mehmet; 
    } 

    List<Class1> books = new List<Class1>();  

    private string kitapAdi; 
    private int sayfaSayisi; 

    public int SayfaSayisi 
    { 
     get { return sayfaSayisi; } 
     set { sayfaSayisi = value; } 
    } 

    public string KitapAdi 
    { 
     get { return kitapAdi; } 
     set { kitapAdi = value; } 
    } 

    public bool AddBook(Class1 kitap) 
    { 
     try 
     { 
      books.Add(new Class1 (kitapAdi = kitap.kitapAdi, sayfaSayisi = kitap.sayfaSayisi)); 

      return true; 
     } 
     catch (Exception) 
     { 
      return false; 
     } 
    } 

それはすべてのエラーを与えるものではありませんが、何も起こりません はここに私のメインクラスです。私がデバッグするとき、私はClass1のAddBookメソッドが正しいデータを取るが、これをブックリストに追加していないことを知っています。

+0

私は[tag:arraylist]は間違ったタグであると考えていますが、C#では強力な型のList <>のバージョンが['ArrayList']と呼ばれています(https://msdn.microsoft.com /en-us/library/system.collections.arraylist(v=vs.110).aspx)。 – Sinatr

+2

本がリストに正しく追加されたかどうかはどのように確認しましたか? 'books'は公開されていないので、メインメソッドからアクセスできません。 –

+0

挿入後に 'books'フィールド*を調べていますか? –

答えて

1

問題は、Class1には、タイプがClass1のオブジェクトを保持するリストが含まれているということです。要素のリストを含むクラスは、深刻な問題につながる可能性があります。あなたが書籍のリストを持っていたいと思うなら、私はあなたが書籍について保存したいすべての情報を含むクラスBookを持っているソリューションを好むでしょう。その後、書籍を管理するクラスBookListを作成する必要があります。下の例では、冒頭に新しい書籍を追加できるクラスBookListがあります。書籍の検索、書籍の削除、すべての書籍のリストの返却などの追加機能を使用して拡張することができます。ここに私の例があります:

class Book 
{ 
    public string Title { get; set; } // This is an automatic property 
    public string Author { get; set; } 
} 

class BookList 
{ 
    private var books = new List<Book>(); 

    public bool AddBook (string title, string author) 
    { 
     books.Add(new Book { Title = title, Author = author }); 
     return true; 
    } 
} 

static void Main(string[] args) 
{ 
    var bookList = new BookList(); 
    bookList.AddBook ("Mehmet", "Ali"); 
} 

次に、1冊の本のリストがあります。

+0

もし彼が単に既存の本のコピーを作成したいのであれば?私には彼のコードは*罰金*(エラー - 賢明)に見えるだけで結論 "それは動作しません"が間違っています。あなたのコードはより洗練されていますが、OPコードには問題がないので、実際に問題を解決する答えはありません。 – Sinatr

+0

@Sinatr:OPはOOPの初心者であることを覚えておいて、私は彼が何か間違っていると思った。 Class1には、自身のタイプのリストが含まれています。これはあまり良いアイデアではなく、問題につながります。私は書籍のリストを持っているOPを理解し、それをするアイデアを彼に与えました。 – Fischermaen

+0

さて、最初から書き直すことは、戦術的な戦術です。あなたが本当に初心者を手助けしたいのであれば、彼が間違っていたことを説明するのが最善です。単に彼に美しいコードを提示するのではなく); – Sinatr

関連する問題