【发布时间】:2014-04-03 03:40:20
【问题描述】:
有人可以解释为什么强制转换为对象无法使用隐式转换运算符吗?隐式转换运算符似乎在装箱之前使用,但一旦装箱它就会失败。
class Program
{
static void Main(string[] args)
{
var ms = new MemoryStream();
var wrapper = new GenericWrapper<MemoryStream> { Item = ms };
object obj = wrapper;
object objMs = ms;
MemoryStream passingImplicitCast = (MemoryStream)wrapper;
MemoryStream passingCast = (MemoryStream)objMs;
MemoryStream failingCast = (MemoryStream)obj; //Throws Unable to cast object
}
}
class GenericWrapper<T>
{
public T Item { get; set; }
public static implicit operator T(GenericWrapper<T> value)
{
return value.Item;
}
}
【问题讨论】:
-
这也不是关于拳击,而是关于铸造。
-
@Dirk 是的,谢谢更新
-
我已经回答了一个相关问题here。这应该会有所帮助