我正在研究C#中的一个小项目(实际上,移动了几个星期到.Net)我遇到了以下情况,
str = System.Convert.ToString(
(sheetRange.Cells[rcnt, ccnt] as Excel.Range).Value2);
在上面的代码中,我试图从excel表读取到String。最初,我尝试了以下操作,
str = (string) ((sheetRange.Cells[rcnt, ccnt] as Excel.Range).Value2);
导致运行时错误,无法将“System.Double”类型的对象强制转换为“System.String”。发现了InValidException。
我用谷歌搜索了两者之间的区别,但是得不到多少。我有点纠结于此。所以我的问题如下,
1)两者之间的区别是什么,更具体地说,显式类型转换和使用system.convert之间有什么区别?这适用于所有类型吗?
2)这在Java中是否相同,如果它与它相当呢?
我更新了以显示在使用字符串进行投射时我到底得到了什么。我将Double转换为字符串时出现异常。但是,将Double转换为字符串Works。现在我的问题是为什么它不允许将double转换为字符串,同时它允许将double转换为字符串。我希望我能说清楚。
请原谅我,如果它是一个简单的,如果我已经看了一些关于类型铸造的基本观点。
提前致谢。
答案 0 :(得分:4)
在回答问题的第一部分时: Casting 和转换是两回事。 我不是Java开发人员,但我怀疑它在Java中是一样的。
MSDN有一篇文章详细解答了这个问题:Casting and Type Conversions (C# Programming Guide)