Новая динамическая переменная в C # 4.0 - PullRequest
6 голосов
/ 29 октября 2008

Могут ли динамические переменные в C # 4.0 быть членами класса или передаваться или возвращаться из методов? var из C # 3.0 не смог, но я нигде не видел упоминаний о том, возможно ли это с помощью dynamic.

Ответы [ 3 ]

6 голосов
/ 29 октября 2008

Да. Есть большая разница между var и dynamic.

var просто означает «пусть компилятор выведет реальный тип переменной».

dynamic - это тип переменной - поэтому в любом месте, где вы можете указать тип, вы можете указать dynamic вместо этого, насколько я понимаю. (Я уверен, что есть некоторые исключения из этого, но это основная идея.)

РЕДАКТИРОВАТЬ: первая запись в блоге Криса Барроу на dynamic (уже есть вторая уже; ожидайте больше в ближайшее время) дает пример класса, который использует dynamic повсеместно .

5 голосов
/ 29 октября 2008

Все вышеперечисленное. Я опробовал их в VPC и смог сделать все это. См. «Новые функции в C #» здесь

2 голосов
/ 24 марта 2010

Этот фрагмент кода из книги "CLR via C #, 3rd Ed" показывает динамику в действии:

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

Когда я выполняю Main, я получаю следующий вывод:

M (Int32): 10

M (строка): AA

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...