¿Cuál es la diferencia entre String y string y var? [duplicar]

Tengo este caso de uso:

using System;
namespace ConsoleApplication11
{
  using System.Collections.ObjectModel;

  public class Program
  {
    static void Main(string[] args)
    {
      var test2 = "Name";
      string test1 = "Name";
      String test3 = "Name";

     Console.WriteLine(test1 + test2 + test3 + "NameNotDefined");
   }
 }
}

Qué hará el compilador:

  • en esta linea Console.WriteLine(test1 + test2 + test3 + "Alugili");?
  • con el último "NameNotDefined"?

¿Llamó el compilador? ToString() a cada uno de ellos y luego aplicar el Operador +?

¿Alguien puede explicarme la diferencia entre var y String y string y "" y cómo interactuará el compilador con ellos?

preguntado el 11 de septiembre de 13 a las 14:09

Oh dios, mátame ahora.. -

@ user1671639 ¿De qué diablos estás hablando? -

@user1671639 var no es temporal... es una variable local tipificada implícitamente. -

@BassamAlugili ¿Es demasiado pedir leer la documentación? Todos leyeron su pregunta y la cerraron apropiadamente -

Su pregunta es nula ya que no ha entendido cómo se definen las variables para empezar, básicamente tiene string + string + string si te ayuda a entender -

2 Respuestas

Los tres se compilan de forma idéntica en C#. La palabra clave "var" se usa para inferir el tipo en tiempo de compilación, y el compilador infiere que está usando una cadena (que es lo mismo que Cadena).

Respondido el 11 de Septiembre de 13 a las 14:09

string es un alias para System.String, ambos se compilan en el mismo código, por lo que en el momento de la ejecución no hay diferencia.

El + se utiliza para la concatenación de cadenas, por lo que cuando escribe test1 + test2 + test3 + "Alugili" concatena todas las cadenas y forma una cadena. En .net, las cadenas son inmutables, es decir, las cadenas no se pueden modificar. Cuando modifica una cadena, en realidad está creando una nueva cadena.

Acerca de var MSDN dice esto:

A partir de Visual C # 3.0, las variables que se declaran en el ámbito del método pueden tener un tipo var implícito. Una variable local implícitamente escrita se escribe fuertemente como si usted mismo hubiera declarado el tipo, pero el compilador determina el tipo. Las siguientes dos declaraciones de i son funcionalmente equivalentes:

Respondido el 11 de Septiembre de 13 a las 14:09

Entonces, en el último "Alugili", se creará un nuevo objeto de tipo cadena y se inyectará en el código, ¿quieres decir eso? - Bassam Alugili

@Bassam Alugili - Sí, para obtener más información, consulte este enlace de MSDN msdn.microsoft.com/en-us/library/ms228362%28v=vs.90%29.aspx - bibhu

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.