2017-11-03 6 views
-2

C1はクラスです。'C1'は 'タイプ'ですが、 '変数'のように使用されます

public class C1 
{ 
    public int a{get; set;} 
} 
public class C2 
{   
    public C2(){c1 = new C1(); } 
    public C1 c1{get; private set; } 
    public C1 f(){return C1();} 
} 

C2.f()の定義については、コンパイルされません。

'C1' is a 'type' but is used like a 'variable'

C1は私には方法のように使用されます。なぜコンパイルは変数のように使われていると言いますか?

私はnewを使用する必要があることを知っています。私はなぜコンパイラが変数のように使われていると言っているのか尋ねています。

ありがとうございました。

+3

'新しいC1()を返すのですか? – Ivar

+0

私は 'new'を使う必要があることを知っています。私はなぜコンパイラが変数のように使われていると言っているのか尋ねています。 – Ben

+1

@Benあなたはそれを返そうとしているからです。変数/定数/リテラル​​またはメソッドの出力を返します。 'C1'はそれらのものではなく、' new C1() 'は' C1'クラスの新しい変数です。 – Powerlord

答えて

1

C1()の使用は、あなたが呼び出しようとしている代理人だと思っています。

0

C1はクラスです。最初に新しいインスタンスを作成する必要がある参照型を返す場合は、クラスは参照型です。しかし、あなたはしませんでした。 ;

リターン:

コンパイラはこれを見るとき:

しかし、コンパイラエラーについて

returnキーワードと 'a'の間に何もないためです。そしてあなたが知っているように、あなたは '値の種類'をインスタンス化する必要はありません。したがって、コンパイラは、ユーザが 'a'という名前の変数を返そうとしていると仮定します。

私はそれがあなたが探していることを望みます。

関連する問題