[英]please explain the use of “default()” in this code
來源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和提供商和產品!
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();
在.NET 2.0中添加了default
關鍵字以滿足泛型。 它只表示傳遞給它的任何類型的默認值(意味着未初始化)。 對於引用類型,這是null
; 對於值類型,它是“零”值。 除非您正在編寫通用函數,否則沒有理由使用此運算符。
在你的例子中,它沒有做任何事情。 它可以被刪除,前兩行可以組合。
Server srv = new Server();
鏈接服務器也是如此。
LinkedServer lsrv = new LinkedServer(srv, "OLEDBSRV");
考慮到之后立即分配,似乎沒有一點。 這種情況下的陳述毫無用處。 你不妨放
Server srv = new Server();
default
可用於分配類型化的空引用。 在聲明像這樣的變量時,我傾向於使用var
關鍵字:
var value = default(Class);
我能做到這一點的唯一方法是使用default
因為編譯器需要類型信息來推斷value
。 在您的具體示例中,它只會增加無意義的冗長。
default(Server)
將返回null。 從語法上講,它相當於
Server srv = null;
它的便利代碼允許統一處理值類型和引用類型,在處理泛型時特別方便。
請查看以下參考: http : //msdn.microsoft.com/en-us/library/xwth0h0d.aspx
通過使用default
關鍵字,您可以為變量分配默認值。 當您使用泛型類型時,它會派上用場。
default
提供給定類型的默認值(與泛型一起使用)。 對於引用類型,這是null,值類型是零值。
在您的情況下,沒有意義 - 您可以實例化實例內聯或指定null
因為您知道類型...
default
始終將字段歸零。 對於引用類型,這意味着引用為null
(因為null
實際上指向地址零),對於值類型,它意味着其中的所有字段在內存中為零,有效地使數字類型為零, DateTime
為DateTime.MinValue
,等等
在這種情況下,我假設Server
和LinkedServer
都是引用類型,因此使用default與將它們設置為null
相同。 我假設編寫此代碼的人並不真正理解default
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.