Вопрос

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

Этот фрагмент кода из книги " 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top