我一直在学习设计模式,我在课堂上看到了这样的方法调用:
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
的新实例或其他内容。我没有找到与此有关的任何内容。
非常感谢您的帮助。
如果您需要,我可以粘贴整个代码,或者实际上它是写在书上的,所以我需要在这里写下来。
感谢。
答案 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#语法的类型名称。