有人可以解釋爲什麼鑄造對象無法使用隱式轉換運算符嗎?隱式轉換運算符似乎在裝箱之前使用,但一旦裝箱就失敗了。C#轉換運算符不知道被轉換爲對象?
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
@Dirk yep,thx更新了 – deepee1
我已經回答了一個相關問題[here](http://stackoverflow.com/a/18953867/2530848)。這應該有助於 –