首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Int32是DateTime?

Int32是DateTime?
EN

Stack Overflow用户
提问于 2015-11-02 16:07:45
回答 3查看 428关注 0票数 1

我当时正在编写一个控制台程序,我试图将Console.ReadLine()转换为Int32,不是输入ReadLine(),而是意外地输入了WriteLine()

代码语言:javascript
复制
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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-02 16:14:09

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

  • DateTime
  • 布尔值
  • 字节
  • 字符
  • 双倍
  • 小数
  • Int16
  • Int64
  • 对象
  • 字符串
  • 还有更多,请参阅其余部分的文档。

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

票数 4
EN

Stack Overflow用户

发布于 2015-11-02 16:16:45

这并不是说Int32System.DateTime

编译器只是想猜测:它认为您想调用Convert.ToInt32(DateTime dt);,而不是调用Convert.ToInt32(void); (是void返回类型的Console.WriteLine())。

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

票数 0
EN

Stack Overflow用户

发布于 2015-11-02 16:18:10

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33481913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档