tipos objetos lista dinámicos dinamicos dinamicamente crear controles clases arreglos c# object dynamic types

c# - objetos - tipo de objeto dinámico vs.



objetos dinamicos c# (3)

Con el avance en el lenguaje C #, hemos visto que incluso el tipo var es comparable a los tipos dinámicos y de objeto . Estos son los 3 tipos que aprendí al comparar estos 7 puntos:

Objeto

  1. El objeto se introdujo con C # 1.0.
  2. Puede almacenar cualquier tipo de valor, porque object es la clase base de todo tipo en .NET framework.
  3. El compilador tiene poca información sobre el tipo.
  4. El tipo de objeto se puede pasar como argumento de método y el método también puede devolver el tipo de objeto.
  5. Es necesario enviar la variable de objeto al tipo original para usarla y realizar las operaciones deseadas.
  6. Causa el problema en tiempo de ejecución si el valor almacenado no se convierte al tipo de datos subyacente.
  7. Útil cuando no tenemos más información sobre el tipo de datos.

Var

  1. Var fue presentado con C # 3.0
  2. Puede almacenar cualquier tipo de valor, pero es obligatorio inicializar los tipos var en el momento de la declaración.
  3. Es tipo seguro, es decir, el compilador tiene toda la información sobre el valor almacenado, por lo que no causa ningún problema en tiempo de ejecución.
  4. El tipo Var no se puede pasar como argumento de método y el método no puede devolver el tipo de objeto. Var escribe el trabajo en el ámbito donde está definido.
  5. No es necesario realizar el colado porque el compilador tiene toda la información para realizar operaciones.
  6. No causa problemas porque el compilador tiene toda la información sobre el valor almacenado.
  7. Útil cuando no conocemos el tipo real, es decir, el tipo es anónimo.

Dinámica

  1. Dynamic se introdujo con C # 4.0
  2. Puede almacenar cualquier tipo de variable, similar a la antigua variable de lenguaje VB.
  3. No es de tipo seguro, es decir, el compilador no tiene información sobre el tipo de variable.
  4. El tipo dinámico se puede pasar como argumento de método y el método también puede devolver el tipo dinámico.
  5. No se requiere el lanzamiento, pero debe conocer las propiedades y los métodos relacionados con el tipo almacenado.
  6. Causa un problema si se accede a las propiedades o métodos incorrectos porque toda la información sobre el valor almacenado se resuelve solo en tiempo de ejecución.
  7. Útil cuando necesitamos codificar usando reflexión o lenguajes dinámicos o con los objetos COM, porque necesita escribir menos código.

Espero que esto ayude a alguien.

¡Gracias!

He usado el tipo dinámico y el tipo de objeto indistintamente. ¿Hay alguna diferencia entre estos dos tipos? ¿Hay alguna implicancia de rendimiento de usar uno sobre el otro? ¿Cuál de estos es más flexible?


Ellos son muy diferentes.

Si usa la dynamic , opta por la escritura dinámica y, por lo tanto, opta por la verificación en tiempo de compilación en su mayor parte. Y sí, es menos eficiente que el uso de tipeo estático donde puedes usar tipeo estático.

Sin embargo, no se puede hacer mucho con el tipo de object todos modos: apenas tiene miembros. ¿Dónde te encuentras usándolo? Cuando desee escribir un código de propósito general que pueda funcionar con una variedad de tipos, generalmente debe considerar los genéricos en lugar de los object .


En un lenguaje simple:
Supongamos que tenemos el siguiente método:

public static void ConsoleWrite(string inputArg) { Console.WriteLine(inputArg); }

Objeto : el siguiente código tiene un error de compilación a menos que se emita el objeto a la cadena:

public static void Main(string[] args) { object obj = "String Sample"; ConsoleWrite(obj);// compile error ConsoleWrite((string)obj); // correct Console.ReadKey(); }

dinámico : el siguiente código se compila correctamente pero si contiene un valor, excepto la string , arroja un error de tiempo de ejecución

public static void Main(string[] args) { dynamic dyn = "String Sample"; ConsoleWrite(dyn); // correct dyn = 1; ConsoleWrite(dyn);// Runtime Error Console.ReadKey(); }