2017-09-22 20 views
0

あるクラスを別のクラスのコンストラクタMovie()に渡す/接続する際に問題が発生します。基本的には、とDirectorの2つの異なるドメインを持ち、クラスのコンストラクタでDirectorのインスタンスを使用することです。ムービークラスにはpublic Director director;という宣言がありますが、ムービーでコンストラクタパラメータとしてどのように渡すことができますか?他のクラスのコンストラクタでクラスのインスタンスを渡す際の問題

void Main() 
{ 
    Director d1 = new Director("Wachowski Brothers", "USA"); 
    Movie m1 = new Movie("Matrix", d1.Name); 
    Console.WriteLine(m1.Title); 
} 

class Movie 
{ 
    public Director director; 
    public string Title { get; set; } 

    public Movie(string title, Director directorName){ 
    Title = title; 

    } 
} 
class Director 
{ 
    public string Name { get; set; } 
    public string Nationality { get; set; } 

    public Director(string name, string nationality){ 
     Name = name; 
     Nationality = nationality; 
    } 
} 

答えて

1

はこれを試す意味:

void Main() 
{ 
    Director d1 = new Director("Wachowski Brothers", "USA"); 
    Movie m1 = new Movie("Matrix", d1); 
    Console.WriteLine(m1.Title); 
    Console.WriteLine(m1.director.Name); 
} 

class Movie 
{ 
    public Director director; 
    public string Title { get; set; } 

    public Movie(string title, Director directorName){ 
    Title = title; 
    director=directorName; 

    } 
} 
class Director 
{ 
    public string Name { get; set; } 
    public string Nationality { get; set; } 

    public Director(string name, string nationality){ 
     Name = name; 
     Nationality = nationality; 
    } 
} 
+0

これは質問に答える一方で、OPのコードに何が間違っていたかを説明するテキストを追加することを検討する必要があります。これは他のユーザーにとって有益です。 –

2
Movie m1 = new Movie("Matrix", d1.Name); 

あなたはNameを渡したいが、全体のインスタンスはありません

Movie m1 = new Movie("Matrix", d1); 
4

でなければなりません。だからではなく、

Movie m1 = new Movie("Matrix", d1.Name); 

のあなたは

Movie m1 = new Movie("Matrix", d1); 
+0

Reneさんに感謝しますが、どのように 'd1'の値にアクセスできますか?私は監督の国籍を取得した場合、またはそれを設定する場合も意味しますか?私はメインでそれをどうすることができますか? –

+0

私は本当にその質問を理解していないのですか? 'Main'のスコープに' d1'があるので、 'd1.Nationality = ...'かムービー "m1.director.Nationality = ..."のどちらかを使うことができます。 –

+0

'Console.WriteLine(m1.director.Nationality);を試してみましたが、'このエラーが出ています。 'NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。 ' –

0

あなたはこのように同じ時間映画の中でディレクターを作成することができます:上記のよう

void Main() 
{ 
    Movie m1 = new Movie("Matrix", "Wachowski Brothers", "USA"); 
    Console.WriteLine(m1.Title); 
    Console.WriteLine(m1.director.Name); 
} 

class Movie 
{ 
    public Director director; 
    public string Title { get; set; } 

    public Movie(string title, Director director){ 
    Title = title; 
    this.director=director; 

    } 

    public Movie(string title, string DirectorName, string DirectorNationality){ 
    Title = title; 
    director=new Director(DirectorName, DirectorNationality); 

    } 
} 


class Director 
{ 
    public string Name { get; set; } 
    public string Nationality { get; set; } 

    public Director(string name, string nationality){ 
     Name = name; 
     Nationality = nationality; 
    } 
} 
0

投稿が示唆している。あなたの関数の署名。

public Movie(string title, Director directorName) 

は、タイプがDirectorのオブジェクトを呼び出します。あなたは文字列である という名前だけを渡しています。ここでは命名が重要です。あなたはDirector "directorName"と呼んでいます。それはあなたが混乱しているところです。

関連する問題