运行时获取输入类型

本文关键字:类型 输入 获取 运行时 | 更新日期: 2023-09-27 17:58:36

我是c#的初学者。当编程正在运行时,我们如何在不进行异常解析的情况下获取变量类型。我们不知道会输入什么类型的用户。

我很想做这个

    Console.WriteLine("Enter Something From Keybord");
        var variable = Console.ReadLine();
        switch (variable.GetType())
        {
            case System.Int32:
                       variable += 1;
                       Console.WriteLine(variable);
                break;
            case System.String:
                        variable +="*";
                        Console.WriteLine(variable);
                        break;
            case System.Double:
                        variable += 1;
                        Console.WriteLine(variable);
                        break;
            default:
                break;
        }

运行时获取输入类型

Console.ReadLine方法将基于string的输入流作为字符返回。

无论是哪种类型的数据输入,您的variable始终是string。这就是为什么variable.GetType()始终返回System.String的原因。在这种情况下,使用switch语句是不合乎逻辑的。

如果要检查输入是否为有效的Int32Double,可以使用Int32.TryParseDouble.TryParse方法来检查它们是否为有效intdouble

Console.WriteLine("Enter Something From Keybord");
var variable = Console.ReadLine();
int i;
double d;
if(Int32.TryParse(variable, out i))
{
    // Your variable is a valid int and it's value assingned to i.
}
if(Double.TryParse(variable, out d))
{
    // Your variable is a valid double and it's value assingned to d.
}

使用Int、Double等的TryParse方法

MSDN 上的Int32.TryParse

试试这个。

Console.WriteLine("Enter Something From Keybord");
        var variable = Console.ReadLine();
        switch (variable.GetType())
        {
            case typeof(int):
                       variable += 1;
                       Console.WriteLine(variable);
                break;
            case typeof(string):
                        variable +="*";
                        Console.WriteLine(variable);
                        break;
            case typeof(double):
                        variable += 1;
                        Console.WriteLine(variable);
                        break;
            default:
                break;
        }