Convertir une chaîne en type en C#

Muhammad Zeeshan 12 octobre 2023
  1. Obtenir le type de la valeur String en C#
  2. Comparer des objets type en C#
Convertir une chaîne en type en C#

Dans cet article, j’expliquerai comment convertir une chaîne en type ou obtenir le type de données en C#. Pour déterminer le type de valeur, nous utiliserons la fonction .GetType.

Obtenir le type de la valeur String en C#

L’exemple ci-dessous récupère le type runtime d’une chaîne et d’autres valeurs et procède à l’obtention du type de chaque valeur.

Créez une classe nommée StringtoType et une méthode Main().

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

Ensuite, créez une variable de type Objet[] appelée allvalues et donnez-lui des valeurs comme "Abc" (sous forme de chaîne) et 89 (sous forme d’octet).

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' };

Puis, à l’aide d’une boucle foreach, vérifiez chaque entrée du tableau pour déterminer son type.

foreach (var data in allvalues) {
}

Initialiser une variable nommée t de Type de type à l’intérieur de la boucle foreach. La variable t contiendra le type de données de chaque valeur présente dans le tableau allvalues avec l’aide de la méthode data.GetType().

Type t = data.GetType();

Après cela, nous appliquerons la condition if pour vérifier si chaque valeur sera une chaîne.

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

Si une valeur s’avère être une chaîne, un message s’affichera comme ci-dessous.

'Happy Programming' is a String

Après avoir converti une chaîne en Type, et d’autres types de données comme byte, sbyte, int et double etc. à l’aide des vérifications else if suivantes :

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);

Enfin, s’il existe des types de données autres que byte, sbyte, int, double et long dans le tableau allvalues, il affichera simplement un message comme celui-ci:

'Z' is another type of data

Exemple de code complet :

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);
    }
  }
}

Production:

 '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

Comparer des objets type en C#

Un objet Type avec un type est distinct. Deux identifiants d’objet Type correspondent à un même objet s’ils représentent le même type.

Il permet de comparer des objets Type en utilisant l’égalité des références. L’exemple ci-dessous compare des objets Type qui contiennent plusieurs valeurs entières pour voir s’ils sont du même type.

Initialisez d’abord les variables de type int, double, et long dans la méthode Main(), et attribuez-leur des valeurs.

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

Initialisez une variable nommée t de type Type dans la variable t, nous allons stocker le type de données de valeur 1 nommé Value1 à l’aide de la méthode .GetType.

Type t = Value1.GetType();

Maintenant, avec l’aide de la fonction Object.ReferenceEquals(t, Value2.GetType()), nous allons comparer les types de tous les objets avec 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()));

Exemple de code complet :

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()));
  }
}

Production:

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

Article connexe - Csharp String