我的代码做到这一点使用反射和字符串,我给它,而不是用户输入。最终,我希望用户能够说“浮动”“2.0”,并让电脑说,是的,这是一个浮点数,或计算机会说的“bool”“abc”,这不是听说的布尔值。解析为基本类型,基于c#中的用户输入#
这将足够简单到接受用户输入并将其转换为基本类型名称,如“字符串”到“System.String”,“float”到“System.Single”等(尽管如果你知道一个函数来做到这一点,那将是巨大的)
下面的代码:
Console.WriteLine("1.0 => {0}", System.Single.Parse("1.0")); // this works fine.
Type t = Type.GetType("System.Single"); // for parsing floats
MethodInfo mi = t.GetMethod("System.Single.Parse"); // "ambiguous" if use "Parse"
object[] parameters = new object[] { "1.0" };
float f = (float)(mi.Invoke(null, parameters)); // get null exception here.
Console.WriteLine("Was succesfully parsed to: " + f);
但我不断收到第二空例外最后一行。那里发生了什么?
为什么不使用TryParse?我认为这会简化这一点。 – 2011-01-13 17:11:35
有没有原因,你不能直接使用** Single.Parse(“1.0”)**而不使用反射? – Jeff 2011-01-13 17:13:03
@Chris:Try Parse实际上让我对事情变得更加复杂,有趣的出旗的B/C。 – user420667 2011-01-13 17:14:01