控制台中直接来自用户的动态输入

Dynamic Input direct from user in console

在下面的代码中;

for (int i = 0; i < 5; i++)
        {
            dynamic x;
            x = Console.ReadLine(); //readline methode returns string.
            Console.WriteLine(x.GetType().ToString());
        }

我试图建立一个简单的概念,即用户希望输入 5 个不同类型数据的元素,然后每次都会显示。

问题是,ReadLine 总是 return 值作为字符串,我可以使用转换,但仍然会强制用户输入唯一的转换类型。

我一直在寻找,但真的不知道该怎么做,因为我不知道如何表达这个问题。

是否有另一种方法可以动态地从用户或 属性 我不知道的地方获取输入。

没有。没有其他方法可以从控制台接受用户输入。它将永远是 text/string.

您必须将来自 Console.ReadLine() 的输入从字符串解析为您需要的任何类型。你的问题是如果你只有一个字符串就无法知道类型是什么。如果用户输入“2”,她指的是数字 2(整数)还是她实际指的是“2”(字符串)。

您的成功可能有限,但由于评论中指出的原因,它将仅限于少数原始类型。例如,无法区分 Float32 和 Float64

的浮点输入
for (int i = 0; i < 5; i++)
{
    var input = Console.ReadLine();

    dynamic x;
    if (int.TryParse(input, out int a))
        x = a;
    else if (float.TryParse(input, out float b))
        x = b;
    else if (input.Length == 1)
        x = input[0];
    else
        x = input;

    Console.WriteLine($"{x}: {x.GetType()}");
}

5
5: System.Int32
6.9
6.9: System.Single
f
f: System.Char
stri
stri: System.String