控制台中直接来自用户的动态输入
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
在下面的代码中;
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