什么是new()函数?

时间:2010-11-30 07:52:19

标签: c# design-patterns proxy-pattern

我一直在学习设计模式,我在课堂上看到了这样的方法调用:

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());
    }
}

正如您所看到的,那里有一个subject = new();来电,我想知道它是否正在创建Proxy的新实例或其他内容。我没有找到与此有关的任何内容。

非常感谢您的帮助。

如果您需要,我可以粘贴整个代码,或者实际上它是写在书上的,所以我需要在这里写下来。

感谢。

5 个答案:

答案 0 :(得分:11)

这是书中的拼写错误。没有当前版本的C#有效(它应该引发“预期类型”编译器错误)。没有上下文,就不可能知道应该是什么。

答案 1 :(得分:4)

AFAIK这是错的,而且代码甚至都不会编译。

C#中的新关键字只能包含此链接中描述的3个含义:
http://msdn.microsoft.com/en-us/library/51y09td4%28v=VS.80%29.aspx

答案 2 :(得分: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"已经宣布两次。显然,当我查看这本书时,我没有发现错误。 (这里要做的正确的事情是从" subject")的第二个声明中删除类型。

但是,您报告的错误。

确定这不是你的副本所说的吗?我有2007年12月的第一版;你有什么版本?也许有人试图在以后的版本中纠正这个错误并搞砸了?我的猜测是有人试图通过从错误的行中删除两个提及的ProtectionProxy类型而不是删除第一个来纠正错误。

答案 3 :(得分:2)

那将是代理类。在此之前从未见过这样的语法。最好不要使用这样的东西,因为它只会降低可读性..

答案 4 :(得分:2)

我看不出那是怎么编的。在此上下文中,“new”是new运算符,并且总是需要每个C#语法的类型名称。