Konvertieren von String in Typ in C#

Muhammad Zeeshan 12 Oktober 2023
  1. Typ eines String-Wertes in C# ermitteln
  2. Vergleichen Sie type-Objekte in C#
Konvertieren von String in Typ in C#

In diesem Beitrag erkläre ich, wie man String in type umwandelt oder den Datentyp in C# erhält. Um den Werttyp zu bestimmen, verwenden wir die Funktion .GetType.

Typ eines String-Wertes in C# ermitteln

Das folgende Beispiel ruft den Typ Laufzeit einer Zeichenfolge und anderer Werte ab und fährt fort, um den Typ jedes Werts abzurufen.

Erstellen Sie eine Klasse namens StringtoType und eine Main()-Methode.

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

Erstellen Sie als Nächstes eine Variable vom Typ Object[] namens allvalues und geben Sie ihr einige Werte wie "Abc" (als String) und 89 (als 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' };

Überprüfen Sie dann mit einer foreach-Schleife jeden Eintrag im Array, um seinen Typ zu bestimmen.

foreach (var data in allvalues) {
}

Initialisieren Sie eine Variable mit dem Namen t vom Typ Typ innerhalb der foreach-Schleife. Die Variable t enthält den Datentyp jedes Werts, der im Array allvalues mit Hilfe der Methode data.GetType() vorhanden ist.

Type t = data.GetType();

Danach wenden wir die if-Bedingung an, um zu prüfen, ob jeder Wert ein String ist.

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

Wenn festgestellt wird, dass es sich bei einem Wert um eine Zeichenfolge handelt, wird eine Meldung wie unten angezeigt.

'Happy Programming' is a String

Nach der Konvertierung eines Strings in Type und andere Datentypen wie byte, sbyte, int und double usw. mit Hilfe der folgenden else if-Prüfungen:

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

Wenn schließlich andere Datentypen als byte, sbyte, int, double und long im Array allvalues gefunden werden, wird einfach eine Meldung wie diese angezeigt:

'Z' is another type of data

Vollständiges Codebeispiel:

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

Ausgabe:

 '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

Vergleichen Sie type-Objekte in C#

Ein Typ-Objekt mit einem Typ ist eindeutig. Zwei Objektbezeichner vom Typ Typ entsprechen demselben Objekt, wenn sie denselben Typ darstellen.

Es ermöglicht den Vergleich von Type-Objekten mittels Referenzgleichheit. Das folgende Beispiel vergleicht Type-Objekte, die mehrere Integer-Werte enthalten, um zu sehen, ob sie vom gleichen Typ sind.

Initialisieren Sie zunächst die Variablen vom Typ int, double und long in der Methode Main() und weisen Sie ihnen einige Werte zu.

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

Initialisieren Sie eine Variable mit dem Namen t vom Typ Type in der Variablen t. Wir speichern den Datentyp des Werts 1 mit dem Namen Value1 mit Hilfe der Methode .GetType.

Type t = Value1.GetType();

Jetzt werden wir mit Hilfe der Funktion Object.ReferenceEquals(t, Value2.GetType()) die Typen aller Objekte mit Value1 vergleichen.

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

Vollständiges Codebeispiel:

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

Ausgabe:

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

Verwandter Artikel - Csharp String