Neue dynamische Variable in C # 4.0
Frage
Kann dynamische Variablen in 4.0 C # Mitglieder einer Klasse oder ging in oder von Methoden zurückgegeben? var von C # 3.0 konnte nicht, aber ich habe keine Erwähnung überall von gesehen, ob es möglich ist oder nicht mit dynamischen.
Lösung
Alle oben genannten. Ich versuchte, sie in der VPC aus und war in der Lage, alle diese zu tun. Sehen Sie die 'Neue Funktionen in C #' Dokument hier
Andere Tipps
Ja. Es gibt einen großen Unterschied zwischen var
und dynamic
.
var
bedeutet nur, „lassen Sie den Compiler den realen Typ der Variablen ableiten“.
dynamic
ist der Typ der Variablen - also überall Sie einen Typ angeben, können Sie dynamic
stattdessen angeben können, wie ich es verstehe. (Ich bin sicher, dass einige Ausnahmen von dieser Regel gibt es, aber das ist die Grundidee.)
EDIT: Chris Burrow erster Blog-Eintrag auf dynamic
(es gibt ein zweiten schon, erwarten bald mehr) gibt ein Beispiel-Klasse, die dynamic
überall verwendet
Dieser Code-Schnipsel aus dem Buch "CLR via C #, 3. Auflage" zeigt dynamische in Aktion:
using System;
using System.Dynamic;
static class DyanmicDemo
{
public static void Main() {
for(Int32 demo =0; demo < 2; demo++) {
dynamic arg = (demo == 0) ? (dynamic) 5 : (dynamic) "A";
dynamic result = Plus(arg);
M(result);
}
}
private static dynamic Plus(dynamic arg) { return arg + arg; }
private static void M(Int32 n) { Console.WriteLine("M(Int32): " + n); }
private static void M(String s) { Console.WriteLine("M(String): " + s); }
}
Als ich Haupt ausführen, bekomme ich die folgende Ausgabe:
M (Int32): 10
M (String): AA