| 

.NET C# Java Javascript Exception

2
Microsoft führt ja mit .NET 4.0 das neue Schlüsselwort dynamic ein.
Verliert die Anwendung dadurch nicht an Performance?
Weil der Typ wird ja erst zu Laufzeit festgestellt, zudem werden wahrscheinlich manche Bugs auch erst zur Laufzeit festgestellt.

Ich persönlich finde es gut und jeder der mit dynamsichen Sprachen schon gearbeitet hat wird dieses Feature zu schätzen wissen.
21.09.2009
Void 43 4
1 Antwort
2
Prinzipiell ist das dynamic zur Vereinfachung von Deklarationen über zwei (oder mehr) APIs hinaus gedacht. Wenn eine Klasse nicht im .NET statisch typisiert ist, dann sieht eine Objekt Deklaration beispielsweise so aus:

object calc = GetCalculator();
Type calcType = calc.GetType();
object res = calcType.InvokeMember("Add",
BindingFlags.InvokeMethod, null,
new object[] { 10, 20 });
int sum = Convert.ToInt32(res);


Wäre das Ganze eine JavaScript würdest du folgenden Code nutzen (ähnlich wie oben):

ScriptObject calc = GetCalculator();
object res = calc.Invoke("Add", 10, 20);
int sum = Convert.ToInt32(res);


Das Problem hier ist, dass keine Vereinheitlichung zwischen den zwei APIs herrscht. In .NET 4.0 (bzw. C# 4.0) kannst du nun dynamic benutzen, um diesen Fakt unbeachtet zu lassen:

dynamic calc = GetCalculator();
int sum = calc.Add(10, 20);


Dies ist nicht nur kürzer, sondern bietet den Vorteil, dass der Datentyp dynamisch ist. Es ist einfacher nun verschiedene Objekte anzusprechen, die in dynamisch typisierten Sprachen geschrieben sind. Also musst du nun nicht erst überlegen, mit welcher Sprache du interoperieren willst.

Das Keyword ist ähnlich wie var. Der Typ ist zur Compile Zeit dynamisch, aber zur Laufzeit bekommst du ein strongly-typed Objekt.

Mehr dazu findest du hier:
C# 4.0 Dynamic Programming
22.09.2009
Dustin Klein 2,9k 2 9
var wird schon zur Kompilierzeit aufgelöst - ist somit Syntax-Zucker und nicht dynamisch.

Sonst gute Erklärung - Danke. Jetz weiß ich auch was dynamic bedeutet.
gfoidl 22.09.2009
Ah, richtig @gfoidl. Var ist natürlich nicht dynamisch, da ging bei mir wohl etwas durcheinander. Wie auf der Seite beschrieben ist es lediglich "similar fashioned".
Dustin Klein 22.09.2009

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH