源 http://technet.microsoft.com/en-us/library/ms162234%28SQL.100%29.aspx
码
//Connect to the local, default instance of SQL Server.
{
Server srv = default(Server);
srv = new Server();
//Create a linked server.
LinkedServer lsrv = default(LinkedServer);
lsrv = new LinkedServer(srv, "OLEDBSRV");
//When the product name is SQL Server the remaining properties are
//not required to be set.
lsrv.ProductName = "SQL Server";
lsrv.Create();
}
为什么要使用默认(服务器),? - 即使它的服务器asd = new asd();它仍将连接到默认实例!
为什么要使用默认值(linkedserver) -重点是什么?我们仍然指定srv和提供者和产品!
答案 0 :(得分:11)
default(...)
是默认值运算符。它为引用类型计算为null,或为值类型计算“零”值。
这里绝对没有意义......变量会立即被赋予不同的值。这是等效的,更整洁的代码:
Server srv = new Server();
//Create a linked server.
LinkedServer lsrv = new LinkedServer(srv, "OLEDBSRV");
//When the product name is SQL Server the remaining properties are
//not required to be set.
lsrv.ProductName = "SQL Server";
lsrv.Create();
答案 1 :(得分:2)
在.NET 2.0中添加了default
关键字以满足泛型。它只表示传递给它的任何类型的默认值(意味着未初始化)。对于参考类型,这是null
;对于值类型,它是“零”值。除非您正在编写通用函数,否则没有理由使用此运算符。
答案 2 :(得分:2)
在你的例子中,它没有做任何事情。它可以被删除,前两行可以组合。
Server srv = new Server();
与链接服务器相同。
LinkedServer lsrv = new LinkedServer(srv, "OLEDBSRV");
答案 3 :(得分:2)
似乎没有一点,考虑到它是在之后立即分配的。这种情况下的陈述毫无用处。你不妨放
Server srv = new Server();
答案 4 :(得分:2)
default
可用于分配类型化的空引用。在声明像这样的变量时,我倾向于使用var
关键字:
var value = default(Class);
我能做到这一点的唯一方法是使用default
因为编译器需要类型信息来推断value
。在您的具体示例中,它只会增加无意义的冗长。
答案 5 :(得分:1)
default(Server)
将返回null。从语法上讲,它相当于
Server srv = null;
它是方便代码,允许统一处理值类型和引用类型,在处理泛型时特别方便。
查看以下参考资料: http://msdn.microsoft.com/en-us/library/xwth0h0d.aspx
答案 6 :(得分:0)
通过使用default
关键字,您可以为变量指定默认值。当您使用泛型类型时,它会派上用场。
答案 7 :(得分:0)
default
提供给定类型的默认值(大量使用泛型)。对于引用类型,这是null,值类型是零值。
在您的情况下,没有意义 - 您可以实例化实例内联或指定null
,因为您知道类型...
答案 8 :(得分:0)
default
总是将字段清零。对于引用类型,这意味着引用是null
(因为null
实际上指向地址零),对于值类型,它意味着它中的所有字段在内存中都为零,有效地使数字类型零,DateTime
为DateTime.MinValue
等。
在这种情况下,我假设Server
和LinkedServer
都是引用类型,因此使用默认值与将它们设置为null
相同。我假设编写此代码的人并不真正理解default
的作用。