如何确定值类型的类型

时间:2014-10-16 13:05:04

标签: c#

如何在C#中找到值类型的Type

让我说我有:

string str;
int value;
double doubleValue;

是否有一种方法可以返回任何这些值类型的类型?

为了更清楚,我正在尝试这样的事情:

string str = "Hello";
string typeOfValue = <call to method that returns the type of the variable `str`>

if (typeOfValue == "string") {
    //do something
 } else {
   //raise exception
 }

我希望从用户那里获得输入,如果输入的值不是stringintdouble,则会引发异常,具体取决于我的条件。

我试过了:

public class Test
{
    public static void Main(string[] args)
    {
        int num;
        string value;
        Console.WriteLine("Enter a value");

        value  = Console.ReadLine();
        bool isNum = Int32.TryParse(value, out num);

        if (isNum)
        {
            Console.WriteLine("Correct value entered.");

        }
        else
        {
            Console.WriteLine("Wrong value entered.");

        }
        Console.ReadKey();
    }
}

但是如果我要检查的值类型是string还是其他什么呢?

2 个答案:

答案 0 :(得分:2)

您可以在.Net中的任何元素上使用GetType,因为它存在于对象级别:

var myStringType = "string".GetType();
myStringType == typeof(string) // true

GetType返回一个Type对象,您可以使用Name上的Type属性获取可读的人性化友好名称。

答案 1 :(得分:0)

GetType将返回正确的结果:

string typeOfValue = value.GetType().ToString();

但在这种情况下,您不需要将类型转换为字符串进行比较:

if (typeof(String) == value.GetType()) ...