在 C# 中將字串轉換為型別

Muhammad Zeeshan 2023年10月12日
  1. C# 中獲取 String 值的 type
  2. 比較 C# 中的 type 物件
在 C# 中將字串轉換為型別

在這篇文章中,我將解釋如何將字串轉換為 type 或在 C# 中獲取資料型別。為了確定值型別,我們將使用 .GetType 函式。

C# 中獲取 String 值的 type

下面的示例獲取字串的 runtime 型別和其他值,然後繼續獲取每個值的型別。

建立一個名為 StringtoType 的類和一個 Main() 方法。

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

接下來,建立一個名為 allvaluesObject[] 型別變數,併為其賦予一些值,例如 "Abc"(作為字串)和 89(作為位元組)。

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 迴圈,驗證陣列中的每個條目以確定其型別。

foreach (var data in allvalues) {
}

foreach 迴圈中初始化型別為 Type 的名為 t 的變數。變數 t 將在 data.GetType() 方法的幫助下儲存陣列 allvalues 中存在的每個值的資料型別。

Type t = data.GetType();

之後,我們將應用 if 條件來檢查每個值是否都是字串。

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

如果發現值是字串,則會顯示如下訊息。

'Happy Programming' is a String

在將字串轉換為 Type 和其他型別的資料後,如 bytesbyteintdouble 等,藉助以下 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);

最後,如果在陣列 allvalues 中發現除了 bytesbyteintdoublelong 型別的資料,它將簡單地顯示如下訊息:

'Z' is another type of data

完整程式碼示例:

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

輸出:

 '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

比較 C# 中的 type 物件

具有型別的 Type 物件是不同的。如果兩個 Type 物件識別符號表示相同的型別,則它們對應於同一個物件。

它使 Type 物件能夠使用引用相等進行比較。下面的示例比較了包含多個整數值的 Type 物件,以檢視它們是否屬於同一型別。

首先,在 Main() 方法中初始化 intdoublelong 型別的變數,併為它們分配一些值。

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

在變數 t 中初始化型別 Type 的變數 t,我們將通過 .GetType 方法儲存名為 Value1 的值 1 的資料型別。

Type t = Value1.GetType();

現在,藉助 Object.ReferenceEquals(t, Value2.GetType()) 函式,我們將所有物件的型別與 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()));

完整程式碼示例:

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

輸出:

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

相關文章 - Csharp String