Domanda

Le variabili dinamiche in C # 4.0 possono essere membri di una classe o passate o restituite da metodi? var da C # 3.0 non poteva, ma non ho mai visto alcuna menzione sul fatto che sia possibile o meno con la dinamica.

È stato utile?

Soluzione

Tutto quanto sopra. Li ho provati nel VPC e sono stato in grado di fare tutto questo. Consulta il documento "Nuove funzionalità in C #" qui

Altri suggerimenti

Sì. C'è una grande differenza tra var e dynamic .

var significa solo " lascia che il compilatore deduca il tipo reale della variabile " ;.

dinamico è il tipo di variabile - quindi ovunque tu possa specificare un tipo, puoi invece specificare dinamico , come ho capito . (Sono sicuro che ci sono alcune eccezioni a questo, ma questa è l'idea di base.)

EDIT: primo post di blog su dinamico (c'è un già il secondo ; aspettati di più presto) fornisce una classe di esempio che utilizza dinamico ovunque.

Questo frammento di codice dal libro "CLR via C #, 3a edizione" mostra la dinamica in azione:

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); }
}

Quando eseguo Main, ottengo il seguente output:

M (Int32): 10

M (stringa): AA

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top