我正在寫一個控制檯程序,我試圖將Console.ReadLine()
轉換爲Int32
,而不是打字ReadLine()
,我意外地輸入了WriteLine()
。Int32是DateTime嗎?
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
。
爲什麼說Int32
是System.DateTime
?
這並不是說'int'是'DateTime',它是說它不能將'Console.WriteLine()'(即'void')的結果轉換爲'System.DateTime',這很有意義,因爲你不能將任何東西轉化爲某物。 'Convert.ToInt32'有一個重載,它需要'DateTime'的值(見[這裏](https://msdn.microsoft.com/en-us/library/ch56d3w9(v = vs.110).aspx))和它所做的就是拋出一個'InvalidCastException',這是你所看到的錯誤。儘管如此,我沒有回答爲什麼它會選擇*超載。 –