2016-10-11 5 views
-1

Ich versuche, ein dynamisches Objekt in vb.net zu erstellen, dies wäre einfach mit PHPas es hat magische Methoden für Getters, Setter und Aufrufmethoden, aber ich muss dies tun in vb.netvb.net Äquivalent von php magischen Methoden

in PHP:

<?php 
    // Calles foo::__construct as normal 
    $myFoo = new foo(); 

    // Calls the __set method parsing the values $name as "myVar1" and $value as "foo" 
    $myFoo->myVar1 = "foo"; 
    // Runs the __set method parsing the values $name as "myVar2" and $value as "bar" 
    $myFoo->myvar2 = "bar"; 

    // Calls the __get method parsing the value $name as "myVar1" 
    // and then a seccond call to __get parsing $name as "myVar2" 
    echo $myFoo->myVar1 . $myFoo->myVar2 

    // Calls __call parsing $name as "foobar" and $values as null 
    $myFoo->foobar(); 

    // Calls __callStatic parsing $name as "barfoo" and $values as null 
    foo::barfoo(); 
?> 

kann VB.NET auch mit dieser grundlegenden Ebene der Programmierung fertig werden oder ist es nicht nur:

<?php 
    class foo { 
     private $vars = array() 

     public function __construct() {} 

     public function __get($name) { 
      if (in_array($name, $this->vars)) { 
       return $this->vars[$name]; 
      } 
     } 

     public function __set($name, $value) { 
      $this->vars[$name] = $value; 
     } 

     public function __call($method, $arguments) { 
      ..... 
     } 

     public function __callStatic($method, $arguments) { 
      ..... 
     } 
    } 
?> 

ich dann dieses Objekt wie verwenden können überhaupt möglich?

+0

In Bezug auf 'get'and' set'this [Antwort] (http://stackoverflow.com/ a/20152225/5457643) könnte hilfreich sein. – Turamarth

+0

Der 'get' und' set' Teil ist einfach, benutze einfach ein 'Dictionary (Of String, Object)' oder in generischer Form 'public class Magic (Of T) ... Wörterbuch (Of String, T)'. Das 'call' und' callStatic' könnten mit [Reflection] (http://www.codeproject.com/Articles/206412/Reflection-An-Introduction-to-Reflection-in-NE) gemacht werden. –

+0

Die Antwort auf den anderen Beitrag ist nicht ganz das, wonach ich gefragt habe, ich habe meine Frage aktualisiert, um dies zu reflektieren und weitere Details hinzuzufügen. – Chris

Antwort

2

Grundsätzlich in VB.net zu tun, das wieder alle: Ist VB .Net eine dynamische Sprache?

Antwort ist nein.

Was ist dann der Unterschied zwischen einer dynamischen (wie PHP) und einer statischen (wie VB .Net) Sprache und welche ist die beste?

Here is an answer I found here:

Weder ist "besser". Sie optimieren verschiedene Variablen. Welche Variable Sie optimieren möchten, hängt davon ab, was Sie erreichen möchten.

Alle Sprachen wurden entwickelt, um menschenlesbaren Code in Maschinenanweisungen zu übersetzen. Eine dynamische Sprache (Lisp, Perl, Python, Ruby) wurde entwickelt, um die Effizienz des Programmierers zu optimieren, sodass Sie Funktionalität mit weniger Code implementieren können. Eine statische Sprache (C, C++ usw.) wurde entwickelt, um die Effizienz der Hardware zu optimieren, damit der Code, den Sie schreiben, so schnell wie möglich ausgeführt wird.

Das entscheidende Merkmal einer dynamischen Sprache ist, dass die gesamte Sprache jederzeit verfügbar ist. Dies bedeutet, dass Sie Code zur Kompilierungszeit ausführen und Code zur Ausführungszeit kompilieren können. Dies, kombiniert mit anderen Funktionen (First-Class-Funktionen, Introspektion) ermöglicht Metaprogrammierung, Programme, die sich selbst modifizieren können. Dadurch kann ein Programmierer im Vergleich zu einer statischen Sprache die gleiche Aufgabe mit weniger Aufwand erledigen, und in einigen Fällen können Sie Dinge tun, die in einer statischen Sprache überhaupt NICHT möglich sind. All diese Magie geht jedoch auf Kosten der Ausführungsgeschwindigkeit.

Statische Sprachen machen nicht viel (wenn überhaupt) hinter den Kulissen Magie, so dass es viel weniger Overhead gibt. Da die Kompilierungs- und Ausführungsphase vollständig entkoppelt sind, kann der Compiler länger laufen und besser optimierten Maschinencode generieren. Bei manchen Aufgaben kann statischer Code mehrere Größenordnungen schneller sein als eine dynamische Sprache.

Beide Sprachtypen haben ihren Platz. Perl, Python und Ruby sind großartige Sprachen für die meisten alltäglichen Aufgaben - aber sie sind alle selbst in C geschrieben.

0

Kurz nach einer langen Diskussion, gibt es nicht diese Art und Weise

Verwandte Themen