2017-04-11 10 views
-2

私は2つのクラスを作成しました。最初のクラスはAuthorで、2番目のクラスはBookです。 Bookクラスで 、私は次の属性があります。コンストラクタの配列パラメータから配列クラスメンバを埋める方法

private string s_titre; private string[] name_author; private double d_Price;

と次のコンストラクタ:

public Book(string title, Author[] author, double price) 
{ 
    this.s_titre = titre; 
    for (int i = 0; i <auteur.Length; i++) 
    { 
     authoritarianism[i] = auteur[i].name; 
    } 
    this.d_price = price; 
} 

私はAuthorからフィールドauthorを記入する方法がわかりません。 上記のコードを試しましたが、動作しませんでした。

+2

*フィールド*に注意してください。 C#の属性は、まったく異なるものを意味します。 'Author'クラスが何をしているのかわかりません。 –

+1

例外はありますか? auteurとは何ですか、これも配列ですか?おそらくオートは空ですか? –

+0

あなたのコードに多くのタイプミスがあるように見えますが、私は 'auteur'が' author'であると仮定します。 – Dunno

答えて

0

おそらく、最初に配列を作成するのを忘れていましたか?

public Book(string title, Author[] author, double price) 
{ 
    this.s_titre = titre; 
    // create an array of the same length as author 
    authoritarianism = new string[author.Length]; 
    for (int i = 0; i <auteur.Length; i++) 
    { 
     authoritarianism[i] = auteur[i].name; 
    } 
    this.d_price = price; 
} 
+0

私はname_authorにauther [i] .nameを入れたいと思います。私は控えめな私を望む。 – taha

+0

さて、 'authoritarianism'を' name_author'に変更するだけで、あなたのコードに何が入っているのか混乱してしまいます。 – Dunno

+0

あなたにコードを送るためにあなたのメールアドレスを教えてください。 – taha

0

コードが機能しなかったのは、クラス内の配列が初期化されていないためです。あなたは、LINQで(実際には、任意のIEnumerable<T>)配列を初期化してコピーすることができます。

public Book(string title, IEnumerable<Author> author, double price) { 
    s_titre = titre; 
    d_price = price; 
    authoritarianism = author.ToArray(); 
} 

編集:を私はauther[i].name

name_author[i]でを保存するに Selectの呼び出しを追加します。チェーン:

author_names = author.Select(a => a.Name).ToArray() 
関連する問題