2009-06-21 11 views
1

Schauen Sie bitte unten, was ist der Unterschied zwischen zwei Arten von Codes. Gibt es einen Leistungsunterschied oder was noch?Was ist der Unterschied zwischen ObjectQuery und "var"?

Erst Codes



       ObjectQuery departmans = staffContext.Departman; 
       GridView1.DataSource = departmans; 
       GridView1.DataBind(); 

Second Codes 

var departmans = staffContext.Departman; 
    GridView1.DataSource = departmans; 
       GridView1.DataBind(); 

Dank

Antwort

4

Die effektive Differenz in dem ausgegebenen Code hängt von der Art des departman. Wenn der Typ von Abteilungsleiter ObjectQuery ist, ist der Code äquivalent.

Das Schlüsselwort "var" teilt dem Compiler einfach mit, dass der Typ dieser Variablen auf denselben Typ eingestellt sein soll wie der ihm zugeordnete Ausdruck. In diesem Fall ist es die Art von Departman.

2

Es gibt keinen Unterschied (vorausgesetzt, der Typ von StaffContext.Departman ist ObjectQuery und nicht irgendeine Unterklasse von ObjectQuery). Der Compiler leitet den Typ basierend auf der rechten Seite der Zuweisung ab.

1

Der Typ, den das Schlüsselwort var darstellt, muss zur Kompilierzeit bekannt sein, so dass der ausführbare Code in beiden Fällen identisch ist, solange der Typ tatsächlich identisch ist.

Der Typ wird basierend auf dem Typ der rechten Seite abgeleitet. Daher müssen Sie in einigen Fällen den Typ angeben, um das gewünschte Ergebnis zu erhalten. Zum Beispiel:

Stream s = File.OpenRead(fileName); 

Dies wird natürlich geben Sie eine Variable vom Typ Stream. Auf der anderen Seite:

var s = File.OpenRead(fileName); 

Dies wird Ihnen stattdessen eine Variable vom Typ FileStream. Wenn der Typ auf der rechten Seite nicht offensichtlich ist, sollten Sie das Schlüsselwort var überhaupt nicht verwenden.

Verwandte Themen