2010-11-30 15 views
4

私はデザインパターンを学習してきたと私はクラスから、このようなメソッドの呼び出しを見た:あなたはそこにsubject = new();呼び出しがあると私はそれがProxyの新しいインスタンスを作成しているかどうかを疑問に思って見ることができるようにnew()関数とは何ですか?

class Client: SubjectAccessor { 
    static void Main() { 
     Console.WriteLine("Proxy Pattern\n"); 

     ISubject subject = new Proxy(); 
     Console.WriteLine(subject.Requesy()); 

     subject = new(); //Here is what I am asking 
     COnsole.WriteLine(subject.Request()); 
    } 
} 

をまたは、他の何か。私はこれに関連するものは見つけていない。

お手数をおかけします。

必要に応じて、コード全体を貼り付けるか、実際には本に書かれているので、ここに書き留める必要があります。

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

+2

これはあなたがこれを見ましたか?タイプミスのように見える – philfreo

+1

C#3.0デザインパターン - Judith Bishop Page 27 – Tarik

+3

これは指定されたタイプです。 http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvcs/thread/6da66b58-2f52-4023-a874-c3e5a4bbca05に従うと、subject = new ProtectionProxy();である必要があります。 –

答えて

11

本の誤字です。有効なC#の現在のバージョンはありません( "Type expected"コンパイラエラーが発生するはずです)。文脈がなければ、それは何かを知ることは不可能ですする必要があります。

+0

それでは、どうしたのですか? 'subject = new Proxy();'? – Tarik

+1

@Braveyard - 私は文脈なしではわかりません。たとえば、* decorator *を表示する意味があります。その場合は、 'new SomethingOtherType(subject)'のようなものかもしれません。 –

+0

あなたはそうです。ありがとう。 – Tarik

2

これはプロキシクラスです。 thoの前にそのような構文を見たことはありません。読みやすさを低下させるだけのようなものは使用しないことをお勧めします..

+0

..コンパイルされません:) – onof

+0

最後の言葉では、あなたには間違いありません。 – Tarik

2

どのようにコンパイルするのか分かりません。このコンテキストの "new"は新しい演算子であり、これは常にC#構文ごとに型名が必要です。

+0

それも私が知っていたものでした。それはとにかくタイプミスする必要があります。 – Tarik

4

AFAIKそれは間違っており、そのコードはコンパイルされません。

C#で新しいキーワードは、このリンクで説明するだけで3つの意味を持つことができます。私はその本のテクニカルエディターだった
http://msdn.microsoft.com/en-us/library/51y09td4%28v=VS.80%29.aspx

+0

リンクのコンテキストが本当に好きです。ありがとう。 – Tarik

4

を。今私の前にコピーがあります。私のコピーは言う:

class Client : SubjectAccessor { 
    static void Main() { 
    Console.WriteLine("Proxy Pattern\n"); 

    ISubject subject = new Proxy(); 
    Console.WriteLine(subject.Request()); 
    Console.WriteLine(subject.Request()); 

    ProtectionProxy subject = new ProtectionProxy(); 
    Console.WriteLine(subject.Request()); 

ここではエラーがあります。変数 "subject"は2回宣言されています。明らかに私は本を見直したときにエラーをキャッチしなかった。 (ここで正しいことは、 "subject"の2番目の宣言から型を削除することです)。

ただし、ではありません。あなたが報告しているエラーです。

あなたのコピーとは異なりますか?私は2007年12月初版を持っています。どのエディションを持っていますか?おそらく、誰かがこのエラーを後の版で修正しようとしたのでしょうか?私の推測では、誰かがを取り除くことによってエラーを修正しようとしたと思われるでしょうは、最初のを削除するのではなく、誤った行からProtectionProxyタイプを記述しています。

+0

こんにちは、返信いただきありがとうございます。私は2007年12月版を持っています。 – Tarik

関連する問題