jueves, 5 de mayo de 2011

STRING


Cada vez que se ha usado un string, se ha creado un objeto nuevo. Por tanto, ¿cuándo usar un string, y cuándo un símbolo?
  • Si el contenido del objeto es lo importante, usa un string.
  • Si la identidad del objeto es importante, usa un símbolo.

El tipo string representa una secuencia de cero o más caracteres Unicode. string es un alias de String en .NET Framework.
Aunque string es un tipo de referencia, los operadores de igualdad (== y !=) se definen para comparar los valores de objetos string, no las referencias. De esta forma, es más intuitivo comprobar la igualdad entre cadenas. Por ejemplo:
      string a = "hello";
string b = "h";
// Append to contents of 'b'
b += "ello";
Console.WriteLine(a == b);
Console.WriteLine((object)a == (object)b);
Esto presenta "True" y, después, "False" porque el contenido de las cadenas es equivalente, pero a y b no hacen referencia a la misma instancia de cadena.
El operador + concatena cadenas:
      string a = "good " + "morning";
Esto crea un objeto de tipo string que contiene "good morning".
Las cadenas son inmutables: no se puede cambiar el contenido de un objeto de tipo string una vez creado el objeto, aunque pudiera parecer por la sintaxis utilizada que es posible realizar esta operación. Por ejemplo, al escribir este código, el compilador crea en realidad un nuevo objeto de tipo string para almacenar la nueva secuencia de caracteres, y la variable b sigue conteniendo "h".
      string b = "h";
b += "ello";
El operador [] se puede utilizar para tener acceso a caracteres individuales de un objeto string:
      string str = "test";
char x = str[2];  // x = 's';
Los literales de cadena son objetos de tipo string que se pueden escribir de dos formas: entre comillas o entre comillas y precedidos de @. Los literales de cadena se deben encerrar entre comillas ("):
"good morning"  // a string literal
Los literales de cadena pueden contener cualquier literal de carácter, incluidas las secuencias de escape:
      string a = "\\\u0066\n";
Esta cadena contiene una barra diagonal inversa, la letra f y el carácter de nueva línea.