Convertir cadena a tipo en C#

Muhammad Zeeshan 12 octubre 2023
  1. Obtenga el tipo del valor String en C#
  2. Comparar objetos type en C#
Convertir cadena a tipo en C#

En esta publicación, explicaré cómo convertir una cadena a tipo u obtener el tipo de datos en C#. Para determinar el tipo de valor, utilizaremos la función .GetType.

Obtenga el tipo del valor String en C#

El siguiente ejemplo obtiene el tipo runtime de una cadena y otros valores y procede a obtener el tipo de cada valor.

Cree una clase llamada StringtoType y un método Main().

class StringtoType {
  public static void Main() {}
}

A continuación, crea una variable de tipo Object[] llamada allvalues y dale algunos valores como "Abc" (como una cadena) y 89 (como un byte).

object[] allvalues = { "Abc",
                       (long)193527,
                       "Happy Programming",
                       (byte)89,
                       'Z',
                       (sbyte)-11,
                       "Zeelandia is 8th continent",
                       27.9,
                       "I am a string line",
                       (int)20,
                       '7' };

Luego, utilizando un bucle foreach, verifique cada entrada en el array para determinar su tipo.

foreach (var data in allvalues) {
}

Inicialice una variable llamada t de Type de tipo dentro del bucle foreach. La variable t contendrá el tipo de datos de cada valor presente en el array allvalues con la ayuda del método data.GetType().

Type t = data.GetType();

Después de eso, aplicaremos la condición if para verificar si cada valor será una cadena.

if (t.Equals(typeof(string)))

Si se encuentra que un valor es una cadena, se mostrará un mensaje como el siguiente.

'Happy Programming' is a String

Después de convertir una cadena a Type, y otros tipos de datos como byte, sbyte, int y double, etc. con la ayuda de las siguientes comprobaciones else if:

else if (t.Equals(typeof(sbyte))) Console.WriteLine(" '{0}' is a Signed Byte", data);
else if (t.Equals(typeof(byte))) Console.WriteLine(" '{0}' is a  Byte", data);
else if (t.Equals(typeof(int))) Console.WriteLine(" '{0}' is an Integer of 32-bit", data);
else if (t.Equals(typeof(long))) Console.WriteLine(" '{0}' is an Integer of 64-bit", data);
else if (t.Equals(typeof(double))) Console.WriteLine("'{0}' is a double ", data);

Finalmente, si se encuentran otros tipos de datos que no sean byte, sbyte, int, double y long en el array allvalues, simplemente mostrará un mensaje como este:

'Z' is another type of data

Ejemplo de código completo:

using System;
using System.Diagnostics;

class StringtoType {
  public static void Main() {
    object[] allvalues = { "Abc",
                           (long)193527,
                           "Happy Programming",
                           (byte)89,
                           'Z',
                           (sbyte)-11,
                           "Zeelandia is 8th continent",
                           27.9,
                           "I am a string line",
                           (int)20,
                           '7' };

    foreach (var data in allvalues) {
      Type t = data.GetType();
      if (t.Equals(typeof(string)))
        Console.WriteLine(" '{0}' is a String", data);
      else if (t.Equals(typeof(sbyte)))
        Console.WriteLine(" '{0}' is a Signed Byte", data);
      else if (t.Equals(typeof(byte)))
        Console.WriteLine(" '{0}' is a  Byte", data);
      else if (t.Equals(typeof(int)))
        Console.WriteLine(" '{0}' is an Integer of 32-bit", data);
      else if (t.Equals(typeof(long)))
        Console.WriteLine(" '{0}' is an Integer of 64-bit", data);
      else if (t.Equals(typeof(double)))
        Console.WriteLine("'{0}' is a double", data);
      else
        Console.WriteLine("'{0}' is another type of data", data);
    }
  }
}

Producción :

 'Abc' is a String
 '193527' is an Integer of 64-bit
 'Happy Programming' is a String
 '89' is a  Byte
'Z' is another type of data
 '-11' is a Signed Byte
 'Zeelandia is 8th continent' is a String
'27.9' is a double
 'I am a string line' is a String
 '20' is an Integer of 32-bit
'7' is another type of data

Comparar objetos type en C#

Un objeto Type con un tipo es distinto. Dos identificadores de objeto Type corresponden al mismo objeto si representan el mismo tipo.

Permite comparar objetos Type utilizando la igualdad de referencia. El siguiente ejemplo compara objetos Type que contienen varios valores enteros para ver si son del mismo tipo.

Al principio, inicialice los tipos de variables int, double y long dentro del método Main(), y asígneles algunos valores.

int Value1 = 2723;
double Value2 = 123.56;
int Value3 = 1747;
long Value4 = 123456789;

Inicialice una variable llamada t de tipo Type en la variable t almacenaremos el tipo de datos de valor 1 llamado Value1 con la ayuda del método .GetType.

Type t = Value1.GetType();

Ahora, con la ayuda de la función Object.ReferenceEquals(t, Value2.GetType()), compararemos los tipos de todos los objetos con Value1.

Console.WriteLine("Data type of Value1 and Value2 are equal: {0}",
                  Object.ReferenceEquals(t, Value2.GetType()));
Console.WriteLine("Data type of Value1 and Value3 are equal: {0}",
                  Object.ReferenceEquals(t, Value3.GetType()));
Console.WriteLine("Data type of Value1 and Value4 are equal: {0}",
                  Object.ReferenceEquals(t, Value4.GetType()));

Ejemplo de código completo:

using System;
using System.Diagnostics;

class CompareTypeObjects {
  public static void Main() {
    int Value1 = 2723;
    double Value2 = 123.56;
    int Value3 = 1747;
    long Value4 = 123456789;

    Type t = Value1.GetType();

    Console.WriteLine("The data type of Value1 and Value2 are equal: {0}",
                      Object.ReferenceEquals(t, Value2.GetType()));
    Console.WriteLine("The data type of Value1 and Value3 are equal: {0}",
                      Object.ReferenceEquals(t, Value3.GetType()));
    Console.WriteLine("The data type of Value1 and Value4 are equal: {0}",
                      Object.ReferenceEquals(t, Value4.GetType()));
  }
}

Producción :

The data type of Value1 and Value2 are equal: False
The data type of Value1 and Value3 are equal: True
The data type of Value1 and Value4 are equal: False
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn

Artículo relacionado - Csharp String