C# 运行时获取输入类型

C# 运行时获取输入类型,c#,C#,我是c#的初学者。 当程序运行时,我们如何在没有异常的情况下将变量类型解析为变量。我们不知道用户将输入什么类型 我真想这么做 Console.WriteLine("Enter Something From Keybord"); var variable = Console.ReadLine(); switch (variable.GetType()) { case System.Int32:

我是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;
        }
基于输入流以字符形式返回
string

您的
变量
始终将是一个
字符串
,无论输入的数据类型如何。这就是为什么
变量.GetType()
总是返回
System.String
。在这种情况下,使用switch语句是不符合逻辑的

如果要检查输入是否有效
Int32
Double
,可以使用或方法检查它们是否有效
int
Double

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.
}
试试这个

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

对Int、Double等使用TryParse方法


@大天使我写了一个例子
TryParse
方法不会引发任何异常。如果变量
是有效的
int
double
,则返回
true
false