我對C#和Office自動化相對較新,最近我發現自己試圖獲取對某人的Outlook收件箱的引用並按收到時間對郵件進行排序。直到我在Web上的其他地方找到一個解決方案,收件箱被分配給Microsoft.Office.Interop.Outlook.Items類型的局部變量,然後在本地變量上執行排序並且它可以正常工作時,它才工作。但是,這個問題是爲什麼呢?我認爲在C#中的對象是引用,當你聲明一個新的Outlook.Inbox引用,然後爲用戶的收件箱分配項目時,它只是作爲實際電子郵件的附加指針,並且實際上不會複製每封電子郵件到一個新的集合。所以它應該與對原始參考調用Sort不同,對吧?顯然我錯了,所以我會很感激一個解釋。感謝名單!C#中的引用和意想不到的結果
using Outlook = Microsoft.Office.Interop.Outlook;
...
Outlook.Folder oInbox = (Outlook.Folder)oApp.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
oInbox.Items.Sort("[Received]", true); //this doesn't produce expected results
Outlook.Items inboxFolder = (Outlook.Items)oInbox.Items;
inboxFolder.Sort("[Received]", true); //this DOES sort the items!
oInbox.Items的類型是什麼?它可能是該類型重寫Sort方法以具有不同的行爲。通過強制轉換爲Outlook.Items,您可以從基類獲取行爲。 – cadrell0 2012-02-09 16:24:49