【发布时间】:2013-12-05 01:35:33
【问题描述】:
看看这个。我想编写以下程序:如果输入双精度或整数,则将其加 1,但如果输入字符串,则在末尾附加一个星号。所以我决定做一个int.TryParse 和一个double.TryParse。
Console.WriteLine("Enter something:");
object firstTry = 0;
object secondTry = 0;
bool ifInt = int.TryParse(Console.ReadLine(), out firstTry);
bool ifDouble = Double.TryParse(Console.ReadLine(), out secondTry);
在这种情况下,两个 TryParse 都带有下划线,并且我收到一条消息,指出 object 无法转换为 int,在我看来这是不合逻辑的,因为 object 可以是任何类型...或者,显然,我错了……
附:当我使用var 时我没有这个问题,但我仍然想知道在这种情况下这两种类型之间有什么区别。
【问题讨论】:
-
任何东西(一切)都是对象,但并非所有对象都是整数、浮点数、字符串或其他任何东西。这就是您收到错误的原因。你需要投射。
-
@KevinM1: casts 和 ref 参数不能很好地结合在一起。
-
另外,听起来你不想想要两次
Console.Readline(你会得到两条不同的线路)。相反,将 one 调用的结果分配给一个变量,然后在这三种情况下重新使用它。