Int32是DateTime吗?

时间:2015-11-02 16:07:46

标签: c# datetime

我正在编写一个控制台程序,我尝试将Console.ReadLine()转换为Int32,而不是键入ReadLine(),我不小心输入了WriteLine()

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LinqIntegersDemo.cs
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] nums = new int[10];
            var sorted = from c in nums orderby c descending select c;
            int x = 0;

            foreach (var n in nums)
            {
                Console.Write("Enter an integer >> ");
                nums[x] = Convert.ToInt32(Console.WRITELINE());
            }
        }
    }
}

我(显然)收到了错误,但它没有说出预期的内容,而是说我无法将void转换为System.DateTime

为什么说Int32System.DateTime

3 个答案:

答案 0 :(得分:4)

Convert.ToInt32有一个重载,接受:

  • 日期时间
  • 布尔
  • 字节
  • 字符
  • 十进制
  • 的Int16
  • 的Int64
  • 对象
  • 字符串
  • 等等,请参阅其余的文档

当它无法匹配任何重载(void不是一个有效的选项)时,它只选择一个在确定没有有效重载的步骤中失败的重载并在其中使用错误信息。在这种情况下,碰巧选择DateTime重载,但它可以很容易地选择任何其他单参数重载。

答案 1 :(得分:0)

并不是说Int32System.DateTime

编译器只是想猜测:它认为您想要致电Convert.ToInt32(DateTime dt);,而是致电Convert.ToInt32(void);void返回类型为Console.WriteLine()

Convert.ToInt32()有很多重载:没有参数都没有定义。 我不知道为什么它决定用DateTime vs(例如)带有字符串或布尔值的重载来获取重载:在任何情况下都没有不接受任何参数的重载,所以它无法编译代码

答案 2 :(得分:0)

Convert.ToInt32有许多针对不同类型的重载方法。它可能默认为DateTime类型。