2009-10-12 66 views
42

在VB中,var類型是否等同於Variant?當object可以接受任何數據類型時,這兩者之間有什麼區別?C#中「var」和「object」的區別

+15

只是等到'動態'增加了更多的混淆; -p – 2009-10-12 06:06:43

+5

;)在這種情況下,你也有人在這裏幫助我! – user184805 2009-10-12 06:13:08

回答

49

從Visual C#3.0開始,在方法範圍聲明的變量可以有一個隱式類型var。一個隱式類型的局部變量是強類型的,就像你自己聲明瞭類型一樣,但是編譯器決定了類型。的i以下兩個聲明在功能上等同:

var i = 10; //implicitly typed 
int i = 10; //explicitly typed 

VAR不反對

你一定要這樣說的:C# 3.0 - Var Isn't Object

6

Nope - var只是表示您讓編譯器從用於爲變量賦值的表達式中推斷出該類型。

這只是語法糖,讓你少做打字 - 嘗試使型「var」的方法參數,看看會發生什麼:]

所以,如果你有這樣的表達:

var x = new Widget(); 

x將是Widget類型,而不是object

+6

它不僅僅是保存輸入 - 'var'是處理匿名類型的唯一方法。 – Kobi 2009-10-12 05:48:26

+0

哦,是的 - 忘了那一點! – 2009-10-12 07:50:26

6

其他的答案是正確的,我只是喜歡補充一點,實際上你可以把你的光標放在'var'關鍵字上,然後按F12跳轉到推斷的類型聲明。

+8

或者你可以將光標放在「var」上稍微長一些,並在工具提示中看到傳染類型; o) - Cédric1分鐘前 – 2009-10-12 06:03:52

+0

嗨,當我把光標放在var上並按F12時,我被導航到System.Object,所以我導航時,我把光標放在對象上,並按F12。對此的任何解釋...我希望兩者都是相同的 – Saravanan 2011-05-02 10:44:57

0

添加到崗位。

Parent p = new Parent(); 
Child c = new Child();//Child class derives Parent class 
Parent p1 = new Child(); 

對於上面只能訪問父(p1)屬性事件,儘管它包含子對象引用。

var p= new Parent(); 
var c= new Child(); 
var p1 = new Child(); 

當使用'var'而不是類時,您可以訪問父類和子類的屬性。它的行爲就像爲孩子類創建對象一樣。

-1

一個區別是拳擊和拆箱與對象。

+0

裝箱和拆箱的概念涉及將值類型轉換爲引用類型,反之亦然,例如,同時將整數值存儲在數組列表中。 var與對象或裝箱/拆箱無關。這只是一種編譯器技巧,可以消除由於類型名稱而涉及內部方法的大量絨毛。例如現在,而不是'ApplicationInstallerForBase obj = new ApplicationInstallerForBase();'我簡單地寫'var obj = new ApplicationInstallerForBase();'。 'ApplicationInstallerForBase'是我的應用程序中的一個類。 _Note_:我沒有downvoted您的帖子。 – RBT 2016-12-12 05:38:44

相關問題