为了尽可能接近您的语法,如果您只对一种类型(示例中的“int”)感兴趣,这将起作用:
static void Main(string[] args)
{
if (args.Length == 0) { args = new string[] { "3", "43", "6" }; }
IEnumerator<int> scanner = (from arg in args select int.Parse(arg)).GetEnumerator();
while (scanner.MoveNext())
{
Console.Write("{0} ", scanner.Current);
}
}
这是一个更棒的版本,它允许您访问 string 的 IConvertible 实现支持的任何类型:
static void Main(string[] args)
{
if (args.Length == 0) { args = new string[] { "3", "43", "6" }; }
var scanner = args.Select<string, Func<Type, Object>>((string s) => {
return (Type t) =>
((IConvertible)s).ToType(t, System.Globalization.CultureInfo.InvariantCulture);
}).GetEnumerator();
while (scanner.MoveNext())
{
Console.Write("{0} ", scanner.Current(typeof(int)));
}
}
只需将不同的类型传递给 while 循环中的“typeof”运算符即可选择类型。
这些都需要最新版本的 C# 和 .NET 框架。