[C#] String vs string

¿Quién no ha tenido esta pregunta antes? ¿Quién no ha encontrado opiniones que van desde gatos hasta alienígenas? Por eso en este preciso post echaré un poco de luz sobre qué es lo que ocurre aquí.. ¿Qué es un String?.

1. La clase String representa una cádena de caracteres Unicode.

2. El tipo String es una clase sellada que hereda directamente de Object, esto significa que no puedes heredar de String

3. La palabra clave string es simplemente un alias para la predefinida clase System.String de la misma forma en que int lo es de la estructura System.Int32

Console.WriteLine(typeof(string)); //System.String
Console.WriteLine(typeof(String)); //System.String
Console.WriteLine(typeof(int)); //System.Int32
Console.WriteLine(typeof(Int32)); //System.Int32
Console.WriteLine(typeof(long)); //System.Int64
Console.WriteLine(typeof(Int64)); //System.Int64
Console.WriteLine(typeof(double)); //System.Double
Console.WriteLine(typeof(Double)); //System.Double
Console.WriteLine(typeof(bool)); //System.Boolean
Console.WriteLine(typeof(Boolean)); //System.Boolean

4. El resultado de usar string.Concat() o String.Concat() es el mismo, sin embargo por un tema de estándares de codificación deberíamos usar String para los métodos y string para definir variables.

// Correcto
string nombre;
int edad;
bool esFacil;

// Incorrecto
String nombre;
Int32 edad;
Boolean esFacil;

// Correcto
Console.WriteLine(String.Concat("Hello! ", "xamldevelopment"));

// Incorrecto
Console.WriteLine(string.Concat("Hello! ", "xamldevelopment"));

5. Ya que la clase String implementa la interface IEnumerable<char> puedes hacer uso de las extensiones definidas en System.Linq.

string miCadena = "1. Xaml Development es lo máximo. Compartan http://xamldevelopment.blogspot.com";
miCadena.ToList().ForEach(c => Console.Write(c + "-"));
Console.WriteLine();

Console.Write("¿Existe alguna l en mi cadena de caracteres?: ");
Console.Write(miCadena.Any(c => c == 'l'));
Console.WriteLine();

Console.Write("¿Existe algun numero en mi cadena de caracteres?: ");
var regex = new Regex(@"d");
Console.Write(miCadena.Any(c => regex.IsMatch(c.ToString())));

CodePlex

Código fuente disponible en: CSharp -> StringVSstring

Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *