C# Int32是日期时间吗?

C# Int32是日期时间吗?,c#,datetime,C#,Datetime,我正在编写一个控制台程序,我试图将console.ReadLine()转换为Int32,我无意中键入了WriteLine(),而不是键入ReadLine() 我(显然)遇到了一个错误,但它没有说预期的内容,而是说我无法将void转换为System.DateTime 为什么说Int32是System.DateTime?Convert.ToInt32有一个重载,它接受: 日期时间 布尔值 字节 煤焦 双重的 十进制 Int16 Int64 反对 串 还有更多信息,请参阅文档了解其余信息 当它无法

我正在编写一个控制台程序,我试图将
console.ReadLine()
转换为
Int32
,我无意中键入了
WriteLine()
,而不是键入
ReadLine()

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


为什么说
Int32
System.DateTime

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

  • 日期时间
  • 布尔值
  • 字节
  • 煤焦
  • 双重的
  • 十进制
  • Int16
  • Int64
  • 反对
  • 还有更多信息,请参阅文档了解其余信息

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

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

  • 日期时间
  • 布尔值
  • 字节
  • 煤焦
  • 双重的
  • 十进制
  • Int16
  • Int64
  • 反对
  • 还有更多信息,请参阅文档了解其余信息

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

并不是说
Int32
System.DateTime

编译器只是在猜测:它认为您想要调用
Convert.ToInt32(DateTime dt)并调用
Convert.ToInt32(void)
(是
void
控制台的返回类型。WriteLine()

有很多重载:它们都是在没有参数的情况下定义的。
我不知道为什么它决定用DateTime来处理重载,而不是(例如)用字符串或布尔值来处理重载:在任何情况下,都没有不接受任何参数的重载,因此它无法编译代码,这并不是说
Int32
System.DateTime

编译器只是在猜测:它认为您想要调用
Convert.ToInt32(DateTime dt)并调用
Convert.ToInt32(void)
(是
void
控制台的返回类型。WriteLine()

有很多重载:它们都是在没有参数的情况下定义的。
我不知道为什么它决定用DateTime来处理重载,而不是(例如)用字符串或布尔值来处理重载:在任何情况下,都没有不接受任何参数的重载,因此它无法编译代码。
Convert.ToInt32
有许多不同类型的重载方法。它可能默认为DateTime类型

Convert.ToInt32为不同类型提供了大量重载方法。它可能默认为DateTime类型

它不是说
int
DateTime
,而是说它不能将
Console.WriteLine()
(即
void
)的结果转换为
System.DateTime
,这是有意义的,因为您不能将任何内容转换为某些内容
Convert.ToInt32
有一个重载,它接受一个
DateTime
值(见),它所做的只是抛出一个
InvalidCastException
,这就是您看到的错误。我不知道它为什么选择这个重载。它不是说
int
DateTime
,而是说它不能将
Console.WriteLine()
(即
void
)的结果转换成
System.DateTime
,这是有意义的,因为你不能将任何东西转换成某种东西
Convert.ToInt32
有一个重载,它接受一个
DateTime
值(见),它所做的只是抛出一个
InvalidCastException
,这就是您看到的错误。我不知道为什么它会选择超负荷。它会按照特定的顺序选择它们吗?@Slappywag没有任何意义,当然没有你想要依赖的东西。它会按照特定的顺序选择它们吗?@Slappywag没有任何意义,当然没有你想要依赖的东西。
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());
            }
        }
    }
}