簡體   English   中英

投射我的課堂<T>到我的課堂<dynamic>

[英]Cast MyClass<T> to MyClass<dynamic>

以下代碼無法編譯:

public class Test
{
    public void Run()
    {
        List<MyClass<dynamic>> listOfMyClasses = new List<MyClass<dynamic>>();

        MyClass<dynamic> myClass = new MyClass<int>(); // Error here

        listOfMyClasses.Add(myClass);
    }

    public class MyClass<T>
    {
        public void DoSomething() { }
        public void DoSomethingSpecial<T>(T t) { }
    }
}

但是,我認為這在邏輯上是有道理的(如果我弄錯了,請告訴我)。 大概它很有用,因為我可以在不知道類型參數的情況下調用DoSomething 如何完成將myClass到列表中?

而不是使用MyClass<dynamic>的列表,只需使用dynamic的列表:

    public void Run()
    {
        List<dynamic> listOfMyClasses = new List<dynamic>();

        dynamic myClass = new MyClass<int>();

        listOfMyClasses.Add(myClass);
    }

    public class MyClass<T>
    {
        public void DoSomething() { }
    }

為什么我不能從列表中投射<myclass>列出<object> ?<div id="text_translate"><p> 我有一個對象列表,它們屬於我的QuoteHeader類型,我想將此列表作為對象列表傳遞給能夠接受List&lt;object&gt;的方法。</p><p> 我的代碼行顯示...</p><pre> Tools.MyMethod((List&lt;object&gt;)MyListOfQuoteHeaders);</pre><p> 但是我在設計時收到以下錯誤...</p><pre> Cannot convert type 'System.Collections.Generic.List&lt;MyNameSpace.QuoteHeader&gt;' to 'System.Collections.Generic.List&lt;object&gt;'</pre><p> 我需要對我的 class 做任何事情來允許這樣做嗎? 我認為所有類都繼承自 object 所以我不明白為什么這不起作用?</p></div></object></myclass>

[英]Why can't I cast from a List<MyClass> to List<object>?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM