Unterschied zwischen Objekt, Dynamisch und Var
Ich muss wissen, den Unterschied zwischen diesen drei Begriffen Object
, Dynamic
und var
in C#.
Habe ich diesen linkaber ich verstehe nicht, in dem Fall habe ich die Verwendung der einzelnen ein.
Können Sie erklären für mich, bitte, ist der Unterschied zwischen diesen keywords ? Was sind die Dienstprogramme, die jedes Schlüsselwort?
InformationsquelleAutor der Frage Lamloumi Afif | 2014-01-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Alles ist
Object
dies ist eine Basis geben. Jeder Typ erbt vonObject
in einem moment, eine einfacheint
variable Boxen zu einemobject
. Zum Beispiel:Es ist die Abstraktion, die für jede Art und es ist ein Referenz-Typ. Wenn Sie möchten, um die wahre Art, müssen Sie
unbox
es (mit einem conversaion Strategie, wie Methoden, Modelle, etc):Dynamic
ist eine Implementierung eines dynamischen Aspekt in C#, ist es nicht stark typisiert. Zum Beispiel:var
ist nur ein Schlüsselwort der Sprache C#, die können Sie definieren jedes Objekt einen Typ da Sie Sie initialisieren mit einem Wert, und es wird bestimmt das geben von diesem Wert, zum Beispiel:Kann der compiler überprüfen Sie den Typ des Werts, den Sie definiert haben, und setzen Sie es auf das Objekt.
InformationsquelleAutor der Antwort Felipe Oriani
Objekt:
Jedes Objekt in C# abgeleitet aus den Objekt-Typ, entweder direkt oder indirekt. Es ist compile time Variablen und erfordern boxing und unboxing für die Konvertierung, und Sie macht es langsam. Sie können ändern Sie den Wert Typ auf den Typ der Referenz und Umgekehrt.
Var:
Es ist compile time Variablen und erfordert kein boxing und unboxing. Da Var ist eine compile-Zeit-Funktion, die alle die Typprüfung erfolgt zur compile-Zeit nur. Einmal Var initialisiert wurde, können Sie nicht ändern, geben Sie in ihm gespeichert.
Dynamisch:
Es ist der Lauf der Zeit variabel und nicht verlangen, boxing und unboxing. Sie können zuweisen und den Wert für die dynamische und auch ändern können Wert-Typ gespeichert. Alle Fehler, die sich auf dynamische entdeckt werden kann, der zur Laufzeit nur. Wir sagen auch, dass die Dynamik ist ein Laufzeit-Objekt, das können jede Art von Daten.
InformationsquelleAutor der Antwort Love Gupta
1)
var
wird für implizite Typ-definition. Zum Beispiel, wenn Sie eine variable definieren, wie diese:Compiler leitet den Typ basierend auf dem zugewiesenen Wert und eine variable initialisiert, die als integer in compile-Zeit. Nach dieser definition können Sie nicht zuordnen
string
auf Ihre variable, denn es ist eine ganze Zahl.Und Sie nicht verwenden könnenvar
wie diese:Weil Sie zuordnen müssen, um etwas für Ihre variable, wenn Sie mit
var
Stichwort, damit die Art bestimmt werden kann.2)
Object
ist eine Basisklasse für alle Klassen. InC#
alle Klassen erbt von der object Klasse, daher können Sie ordnen alles ein Objekt.Zum Beispiel:Dies ist zu arbeiten, denn wenn Sie dies tun boxing/unboxing Durchführung automatisch für Sie. Und im Gegensatz zu
var
Keywords, die Sie verwenden könnenobject
wie diese:3)
dynamic
ist ein cooles feature, das kam mitC# 4.0
verwenden, können Siedynamic
wenn Sie nicht wissen, Rücksendung geben Sie Ihre Funktion in der Kompilierung.Ihr Typ wird bestimmt inrun-time
.Daher können Sie nicht verwenden von intellisense mit dynamischen Variablen.Können Sie dynamisch wie diese:
Aber Sie müssen vorsichtig sein, wenn Sie dynamische.Denn wenn Sie rufen Sie eine Methode oder Eigenschaft, die nicht existiert, erhalten Sie eine
RuntimeBinderException
im runtime.Und die Letzte Sache, die ich erwähnen möchte,
dynamic
undobject
werden kann parameter geben, abervar
nicht. Zum Beispiel können Sie dies tun:Aber Sie können nicht dies tun:
Weil
var
ist nicht eine Art, es ist eher ein syntaktischer Zucker lassen der compiler den Typ für Sie.InformationsquelleAutor der Antwort Selman Genç
Object
ist die wurzelklasse, die alle .net-Objekte ableiten.var
verwendet wird, als eine Verknüpfung, wenn Sie nicht schreiben wollen sagenstring x = "a"
sondern schreibenvar x = "a"
. Es funktioniert nur, wenn der compiler nicht herausfinden kannst, was du meinst.dynamic
impliziert, dass das, was Sie tun, mit dem Objekt ist nur evaulated zur Laufzeit (x.StrangeMethod()
wird nicht zu einem compile-Fehler, auch wenn die Methode nicht existiert), nützlich bei der Interaktion mit scripting-Sprachen.InformationsquelleAutor der Antwort Dani J
Es ist ziemlich einfach...
Objekt ist eine Basis geben .NET. Alle anderen Typen Erben. Also variable mit Objekttyp enthalten kann alles. Aber es sollte nur geschehen, es gibt keine anderen Optionen, für die der folgenden Gründe:
Bevor lese - /Schreibzugriff auf diese variable haben wir getan unboxing/boxing-Operationen, die teuer sind.
Compiler kann nicht Typprüfung zur compile-Zeit führen können, Fehler und exceptions zur Laufzeit. Zum Beispiel dieser code erfolgreich kompiliert wurde, sondern wirft eine exception zur Laufzeit:
Var ist nicht ein Typ, sondern die Anweisung für den compiler schließen Typ einer Variablen aus dem Programm-Kontext. Es Bedarf für anonyme Methoden, aber kann auch verwendet werden, überall, das Sie wünschen. Vorsicht nur Ihr Programm nicht geworden schwer zu Lesen. Der compiler entscheidet zur compile-Zeit, so wird es keinen Einfluss auf die Programm-Effizienz.
Dynamische – ist eine spezielle Art, für die der compiler nicht die Typüberprüfung zur Kompilierzeit. Der Typ angegeben wird, die zur Laufzeit durch die CLR. Dies ist die statische (!) Art und nach Typ der variable angegeben ist, kann nicht später geändert werden. Wir sollten diese Art nur es gibt keine anderen Optionen aus ähnlichen Gründen, mit dem Objekt-Typ:
Es ist eine addition, um den Typ angeben, der zur Laufzeit - das reduziert die Programm-Effizienz.
Compiler nicht ausführen, Typ-überprüfung führen können, Fehler und exceptions zur Laufzeit.
InformationsquelleAutor der Antwort Lebedev Alexei
Folgenden sind die Differenz zwischen System.Objekt , dynamische und var.
Alles .net ist abgeleitet von System.Objekt-Typ. Aber wenn Sie auf der Suche nach spezifischen Unterschied, hier sind Sie.
Unterschied zwischen Objekt und dynamisch.
1.Sie kann nicht implizit cast eine variable vom Typ Object in einen beliebigen anderen Typ. Der Compiler wird nicht zulassen, Sie tun. Auf der anderen Seite Sie
können implizit cast jedem Typ dynamisch. Der Compiler sich nicht beschweren
weil Gießen durchgeführt wird, während der Laufzeit und der Ausnahme, wenn
benötigt wird angehoben, während der Laufzeit.
2.Denn Dynamik ist dasselbe als Objekt, Sie kann nicht schreiben überladene Methoden unterscheiden sich in Objekt und dynamische Argumente.
Unterschied zwischen dynamischen und var.
1.Deklarieren eine lokale variable, die als dynamische oder var hat nur syntaktische Unterschied.
2. Sie kann nicht deklarieren Sie eine variable vom Typ var ohne es zu initialisieren, Aber Sie tun können, die für eine dynamische variable
3. Sie können nicht mit einem var-variable übergeben, die als Methode argument return aus einer Methode.
4. Sie können nicht eine Besetzung ein Ausdruck, var, aber Sie können es tun für eine dynamische variable.
InformationsquelleAutor der Antwort jewel jose
Objekt
Base-Objekt .net, die meisten der Zeit, die Sie nicht brauchen, um es zu benutzen.
Var
Nur syntaktischer Zucker, Wann immer Sie verwenden, var, Variablentyp entschieden würde, im compile-Zeit entsprechend dem Wert, der zugewiesen werden.
Dynamische
Kommt aus dem DLR Teil .net, werden Sie nur benötigen, wenn Sie Sie verwenden möchten, ein nicht starker Typ eingeben.
InformationsquelleAutor der Antwort Clueless
compiler sagt var ist kontextbezogene Schlüsselwort für die Deklaration von Variablen. wir brauchen deshalb einen Wert zuweisen, der zum Zeitpunkt der Erklärung. compiler prüft dann für Ihren Datentyp und behandeln Sie in der gleichen Weise. Auf diese Weise compiler kennt die variable und setzt die Typ-Sicherheit.
InformationsquelleAutor der Antwort Vikas Thombre