我有一個屬性的接口,和一個實現該接口的類。我將該類的一個實例轉換爲接口,然後嘗試讀取該屬性並且不檢索該值。任何人都能看到爲什麼什麼會導致接口上的屬性失敗?
接口:
public interface IFoo
{
int ObjectId { get; }
}
類:
public class Bar : IFoo
{
public int ObjectId { get; set; }
}
用法:
...
Bar myBar = new Bar() { ObjectId = 5 };
IFoo myFoo = myBar as IFoo;
int myId = myFoo.ObjectId; //Value of myFoo.ObjectId is 5 in Watch, but myId remains at 0 after statement
...
這過於簡單,但實際上我在做什麼。爲什麼我可以在監視窗口中看到myFoo.ObjectId的值,但對myId的賦值失敗(賦值之前和之後的值爲0)?
沒有什麼錯與您的代碼 - 唯一的解釋是,要麼將要檢查它的最後一行的斷點(它在執行之前就是事實),或者你正在檢查錯誤的變量。在最後放置一個'Console.WriteLine(myId)',你會看到這個值確實被設置了。 – Rob